繁体   English   中英

UIScrollView 旋转

[英]UIScrollView Rotation

我有一个滚动视图,它会自动生成一系列包含图像视图的子视图。 这个概念是它几乎是一个自定义的 PDF 样式阅读器,其中每个页面都作为图像加载到图像视图中。 共有三个“层” - 外部 UIScrollView、自动生成的子视图和子视图内部的图像视图。

我的困境是,当生成这些子视图时,它们并没有真正的硬参考,因此在我的 didRotateFromInterfaceOrientation 中,无法说调整此特定视图的大小。

我创建了一个名为 setUpView 的函数,它初始化所有视图和图像,如下所示:

- (void)setUpView {
    //INITIALISE PAGING SCROLL VIEW
    CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds];
    pagingScrollViewFrame.origin.x -= 10;
    pagingScrollViewFrame.size.width += 20;
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];

    //CONFIGURE PAGING SCROLL VIEW  
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width*7, pagingScrollViewFrame.size.height);

    //ACTIVATE PAGING SCROLL VIEW
    self.view = pagingScrollView;

    //ADD PAGES TO SCROLL VIEW
    for (int i = 0; i < 7; i++){
        ImageScrollView *page = [[[ImageScrollView alloc] init] autorelease];
        [self configurePage:page forIndex:i];
        [pagingScrollView addSubview:page];
    }
}

在我的 loadView 方法中,我只是调用了这个函数。

有什么方法可以检测设备的当前方向,以便可以以某种方式输入上述功能? 目前,在旋转时,外部视图旋转得很好,但内部子视图和图像视图没有。

您可以为 UIDeviceOrientationDidChangeNotification 通知制作没有参考观察者的对象,该通知将在每次方向更改时发布。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

然后,在您的orientationChanged: 方法中,您可以检查当前方向并相应地布局您的视图。

但是,您需要通过调用告诉设备生成此类通知

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

请务必移除在 dealloc 上观察方向变化的对象!

您可以通过查看以下内容来获取设备方向:

[UIDevice currentDevice].orientation

或者你可以使用self.interfaceOrientation进行的viewController。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM