UIScrollView 子视图和 setNeedsDisplay

Posted

技术标签:

【中文标题】UIScrollView 子视图和 setNeedsDisplay【英文标题】:UIScrollView subviews and setNeedsDisplay 【发布时间】:2011-12-15 05:47:34 【问题描述】:

我有以下问题:

我有一个包含 UIScrollView 作为子视图的 UIView。 (笔尖文件)。 我以编程方式向 UIScrollView 添加了几个子视图(UIImageView),每个 UIImageview 都包含一个从网络异步加载的图像,因此我需要在下载图像时更新 scrollView。在负责图像获取的类中,我使用此代码宣传负责管理滚动视图的视图控制器

[[(MosaicViewController *)data] scrollView setNeedsDisplay];

Ivar 数据是一个指向 ViewController 的指针。 这东西不起作用,没有重新加载滚动视图 为了确保调用被触发,我在包含滚动视图的 viewController 中编写了一个方法,在这个方法中我调用了 setNeedsDisplay,

[(MosaicViewController *)data updateView];

-(void) updateView

    NSLog(@"setNeedsDisplay");
    [self.scrollView setNeedsDisplay];

方法 updateView 被正确触发,我的意思是在每个 Image 下载后调用,但 scrollView 内容没有更新。在包含scrollView的ViewController中我没有实现drawRect方法,这可能是调用setNeedsDisplay后没有更新的原因吗?

欢迎任何帮助/建议/参考等。 在此先感谢

【问题讨论】:

【参考方案1】:

老兄,你在做 imageView.image = updatedImage 吗??

另外你不应该做 [self.scrollView setNeedsDisplay] 因为你没有在 scrollView 上做任何改变!!

改变的是imageView的内容,imageView.image=downloadedImage会自动触发imageView上的setNeedsDisplay!!

其他一些检查点

scrollView 是否可见? scrollView.contentSize 设置了吗? scrollView 框架是否正确??

【讨论】:

以上是关于UIScrollView 子视图和 setNeedsDisplay的主要内容,如果未能解决你的问题,请参考以下文章

自动布局 + UIScrollView 和单个子视图

UIScrollView 子视图中滚动事件的锁定处理(在 UIScrollView 超级视图内)

子视图内的 UIScrollview 高度动态变化

UIScrollView - 添加子视图,使其水平和垂直居中

UIScrollView 删除子视图动画

UIScrollView 不会作为子视图在里面滚动