我有一个包含一堆子视图的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];
这些都不起作用。
我设法通过以下方式“制造”它:
似乎有一种更清洁的方法来做到这一点。
我还尝试将方向更改侦听器添加到我的子视图子类(口满),并存储每个子视图横向和纵向帧。然后由听众切换。哪个也没用。
非常感谢任何帮助,感谢您的时间。
答案 0 :(得分:0)
for(UIView *在scrollView.subviews中查看)
{
if ([view isKindOfClass:[UIImageView class]])
{
[view removeFromSuperview];
}
}