横向模式下的 UIScrollView 帧大小问题

Posted

技术标签:

【中文标题】横向模式下的 UIScrollView 帧大小问题【英文标题】:UIScrollView frame size issue in Landscape Mode 【发布时间】:2010-03-15 21:47:02 【问题描述】:

我正在尝试使 UIScrollView 自动调整大小并在横向模式下正确显示。人像模式工作正常。 这是我的代码:

- (void)viewDidLoad 
[super viewDidLoad];

//=== load all the custom view 
NSMutableArray *controllers = [[NSMutableArray alloc] init];

int page = 0;
[controllers addObject:[self loadScrollView:[[Page1ViewController alloc] initWithNibName:@"Page1ViewController" bundle:nil] withPage:page++]];
[controllers addObject:[self loadScrollView:[[Page2ViewController alloc] initWithNibName:@"Page2ViewController" bundle:nil] withPage:page++]];
[controllers addObject:[self loadScrollView:[[Page3ViewController alloc] initWithNibName:@"Page3ViewController" bundle:nil] withPage:page++]];

self.viewControllers = controllers;
[controllers release];
//=== automaticaly define number of pages
_numberOfPages = [self.viewControllers count];

// a page is the width of the scroll view
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * _numberOfPages, scrollView.frame.size.height);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;

// First, set the number of pages
pageControl.numberOfPages = _numberOfPages;
pageControl.currentPage = 0;

然后,我进入每个视图控制器的 nib 文件并将背景设置为不同的颜色以测试它是否正常工作。不幸的是,在横向模式下,宽度和高度与纵向模式相同。

我不确定如何解决此问题。希望任何人都可以帮助我。 提前谢谢了。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,但只有当我在横向中打开视图时,它是在纵向的 .xib 中设计的。

如果我纵向打开,然后旋转设备,它的大小是正确的。

我发现如果我在 viewWillAppear 中而不是在 viewDidLoad 中加载我的视图控制器数组,它的大小总是正确的。

【讨论】:

以上是关于横向模式下的 UIScrollView 帧大小问题的主要内容,如果未能解决你的问题,请参考以下文章

横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图

iPad 横向视图帧大小

ios7 iPad横向模式下的错误视图大小

UIScrollView 无法在纵向或横向模式下显示图像

Android 工具栏:横向模式下的小标题文本

横向模式下的启动屏幕