UIScrollView不更新

时间:2012-01-23 21:34:48

标签: objective-c ios xcode uiscrollview

我有一个包含一堆子视图的UIScrollView。如果视图最初以横向或纵向加载,则每个视图的布局都很好。但是,当我尝试处理方向更改时,没有任何反应。

我认为问题在于子视图帧正在更新,但没有重新绘制。

我现在正在使用它来设置方向更改的框架:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation      duration:(NSTimeInterval)duration {
    int i = 0;
    for(UIView *subview in [scroll subviews]) {
        if([subview isKindOfClass:[GalleryThumbContainerView class]]) {
            [subview setFrame:[self getFrameLandscape:i]];
            i++;
        } else {
        }
    }
}

如果设备处于纵向状态且我将其旋转为横向,则不会更新任何子视图新帧。

如果我将设备保持纵向并离开视图,则返回所有新帧都会更新。

这让我相信这是一个没有更新的设置的问题。我试过了:

[self.view setNeedsDisplay];
[self.view setNeedsLayout];
[self.scroll setNeedsDisplay];
[self.scroll setNeedsLayout];

这些都不起作用。

我设法通过以下方式“制造”它:

  1. 删除scrollView的所有子视图
  2. 设置所有子视图新框架
  3. 将所有子视图重新添加回scrollView
  4. 似乎有一种更清洁的方法来做到这一点。

    我还尝试将方向更改侦听器添加到我的子视图子类(口满),并存储每个子视图横向和纵向帧。然后由听众切换。哪个也没用。

    非常感谢任何帮助,感谢您的时间。

1 个答案:

答案 0 :(得分:0)

for(UIView *在scrollView.subviews中查看)

{
    if ([view isKindOfClass:[UIImageView class]]) 
    {
        [view removeFromSuperview];
    }
}