UIScrollView旋转

问题描述 投票:1回答:2

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

我的难题是,由于生成了这些子视图,因此它们实际上并没有严格的引用,因此在我的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方法中,我只调用此函数。

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

iphone objective-c uiscrollview imageview autorotate
2个回答
1
投票

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

[UIDevice currentDevice].orientation

或者您可以将self.interfaceOrientation用于viewController。


2
投票

您可以使对象没有UIDeviceOrientationDidChangeNotification通知的引用观察者,该通知将在每次方向更改时发布。

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

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

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

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

请确保删除观察到dealloc方向变化的对象!

© www.soinside.com 2019 - 2024. All rights reserved.