解决方案 »

  1.   

         // 创建一个bitmap的context
        // 并把它设置成为当前正在使用的context
        UIGraphicsBeginImageContextWithOptions(targetSize,NO,2);
        
        // 绘制改变大小的图片
        [image drawInRect:CGRectMake(0, 0, targetSize.width, targetSize.height)];
        
        // 从当前context中创建一个改变大小后的图片
        UIImage* targetImage = UIGraphicsGetImageFromCurrentImageContext();
        
        // 使当前的context出堆栈
        UIGraphicsEndImageContext();
        
        // 返回新的改变大小后的图片
        return targetImage;
    }然后UIImage * curImage = [self OriginImage:image byScalingToSize:targetSize];然后在cell的imageView中显示
      

  2.   

    本身图片的加载就很耗资源,即使你是使用异步加载。出来后又做图片缩放操作,内存不增加才怪。其实优化的解决方案在服务器端,如果图片在上传服务器时就可根据需要生成相应尺寸的缩略图,那么在ios客户端加载时的好处多多,首先,图片小了,省流量,下载速度快。再者,你也不需要再为如何缩放图片而导致内存不断增加的问题而担心。这是我的建议,请参考。
      

  3.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
      

  4.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;你是想在点击这个cell后,再重新渲染该cell吗?如果是的话,不需要全部都reload,这样的话,可显示的cell都需要渲染一遍。可想而知,这是多么的没有必要。如果只是当前点击的cell,你可以使用reloadRowAtIndexPaths: 这个方法来重新渲染当前点击的cell。只有你指定的这些cell可以被重新渲染render
      

  5.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
    方便把工程打包上传到CSDN或百度盘里吗?因为cellForRow调用两次的问题这样真的不好猜,或者你在cellForRow里下断点,结合堆栈,看下两次调用的时机
      

  6.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;你是想在点击这个cell后,再重新渲染该cell吗?如果是的话,不需要全部都reload,这样的话,可显示的cell都需要渲染一遍。可想而知,这是多么的没有必要。如果只是当前点击的cell,你可以使用reloadRowAtIndexPaths: 这个方法来重新渲染当前点击的cell。只有你指定的这些cell可以被重新渲染render我这点击cell 的效果,是要将当前的所有的cell都重新渲染,相当于点击一个cell 进入下一级目录,并将当前目录中的每条标题进行显示
      

  7.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;你是想在点击这个cell后,再重新渲染该cell吗?如果是的话,不需要全部都reload,这样的话,可显示的cell都需要渲染一遍。可想而知,这是多么的没有必要。如果只是当前点击的cell,你可以使用reloadRowAtIndexPaths: 这个方法来重新渲染当前点击的cell。只有你指定的这些cell可以被重新渲染render我这点击cell 的效果,是要将当前的所有的cell都重新渲染,相当于点击一个cell 进入下一级目录,并将当前目录中的每条标题进行显示
    你不需要这样啊。你只需要在点击此cell后,组织出来下一级的数据源,然后使用push操作跳转到同结构的控制器(注意:和上一个控制器是两个不同的实例,虽然显示的布局及控制器class一样)。这样做的好处: 只关注显示的逻辑,上一层与下一层的交互更容易(push or pop  operation)。
      

  8.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
    方便把工程打包上传到CSDN或百度盘里吗?因为cellForRow调用两次的问题这样真的不好猜,或者你在cellForRow里下断点,结合堆栈,看下两次调用的时机
    我传了viewcontorller部分代码到CSDN上,请您帮看下http://download.csdn.net/detail/nicookly/7960091
      

  9.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
    方便把工程打包上传到CSDN或百度盘里吗?因为cellForRow调用两次的问题这样真的不好猜,或者你在cellForRow里下断点,结合堆栈,看下两次调用的时机
    我传了viewcontorller部分代码到CSDN上,请您帮看下http://download.csdn.net/detail/nicookly/7960091
    你的numberOfRowsInSection方法调用了两次吧
      

  10.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
    方便把工程打包上传到CSDN或百度盘里吗?因为cellForRow调用两次的问题这样真的不好猜,或者你在cellForRow里下断点,结合堆栈,看下两次调用的时机
    我传了viewcontorller部分代码到CSDN上,请您帮看下http://download.csdn.net/detail/nicookly/7960091
    你的numberOfRowsInSection方法调用了两次吧没有啊,不是只有初始化时和reloadData 时才会去调用一次numberOfRowsInSection么
      

  11.   


    谢谢你的回答,我现在遇到个问题,想咨询你一下,  就是我--》》   didSelectRowAtIndexPath中调用一次[self.tableview reloadData] 后, 且 numberOfRowsInSection的返回值为1,却调用了两次cellForRowAtIndexPath,也创建了两次cell,且只显示一行(cell是用xib 实现的自定义cell)不知道什么原因?我看了下代码 却是是只调用了一次reloadData;
    方便把工程打包上传到CSDN或百度盘里吗?因为cellForRow调用两次的问题这样真的不好猜,或者你在cellForRow里下断点,结合堆栈,看下两次调用的时机
    我传了viewcontorller部分代码到CSDN上,请您帮看下http://download.csdn.net/detail/nicookly/7960091
    你的numberOfRowsInSection方法调用了两次吧大神 ,不知道 能否加你QQ 我的QQ273575009  我这问题都耽误了几天了 实在是急着解决 不知道能否加QQ下