objective-c - UIScrollView 不更新

标签 objective-c ios xcode uiscrollview

我有一个包含一堆 subview 的 UIScrollView。如果 View 最初以横向或纵向加载,则每个布局都很好。但是,当我尝试处理方向变化时,什么也没有发生。

我认为问题在于 subview 框架正在更新,但没有重新绘制。

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

- (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 {
        }
    }
}

如果设备是纵向的并且我将它旋转成横向,则没有任何 subview 新帧被更新。

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

这让我相信这是未更新集合的一些问题。我试过:

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

这些都不起作用。

我已经设法“使”它工作:

  1. 删除 ScrollView 的所有 subview
  2. 设置所有 subview 的新框架
  3. 将所有 subview 重新添加回 scrollView

似乎有一种更简洁的方法可以做到这一点。

我还尝试向我的 subview 子类添加方向更改监听器(满嘴),并存储每个 subview 的横向和纵向帧。然后由监听器切换。这也不起作用。

非常感谢您的帮助,感谢您抽出宝贵时间。

最佳答案

for (UIView *view in scrollView.subviews)

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

关于objective-c - UIScrollView 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978925/

相关文章:

ios - 滑动手势 View Controller Xcode 5.1.1

iphone - 如何允许用户缩放 ImageView 并保持照片质量?

iphone - 如何延迟 UIKit 中的 UINavigationController 转换?

ios - 不同的 UIViewController 登录

ios - 无法从其 subview 中获取正确的 UIScrollView 高度

Xcode - 如何使主 Controller 和详细 Controller 同时显示?

ios - 检测热点在 iPhone X 中崩溃

android - Flex Mobile 监听 <s :View> 中的事件

javascript - iOS 上滚动问题的粘滞元素

ios - 在 CoreData 中安全地加密和存储密码