0

我有一个视图,其中包含一些按我想要的方式工作的文本视图。无论是横向还是纵向,都扩展到相同的右边距。

我最近尝试将普通视图更改为滚动视图。不过,我没有运气像以前那样扩展这些文本视图。在横向模式下,所有东西都挤在左侧,宽度与纵向手机相同。

这是一些代码。

- (void)viewDidLoad {
    CGSize screen = [self handleScreenOrientation];
    [(UIScrollView *)self.view setContentSize:CGSizeMake(screen.width, screen.height)];
}

- (CGSize)handleScreenOrientation {
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    CGRect screenRect = [[UIScreen mainScreen] bounds];

    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown ) {
        return CGSizeMake(screenRect.size.width, screenRect.size.height);
    }
    else {
        return CGSizeMake(screenRect.size.height, screenRect.size.width);
    }
}

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    CGSize screen = [self handleScreenOrientation:toInterfaceOrientation];
    UIScrollView *scrollView = (UIScrollView *)self.view;
    scrollView.frame = CGRectMake(0, 0, screen.width, screen.height);
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height);
    [scrollView setNeedsDisplay];
}

传递方向的handleScreenOrientation方法与无参数的方法相同,只是它使用传递的方向而不是状态栏的当前方向。

我已经检查过了,我的滚动视图设置为自动调整子视图。

任何想法将不胜感激。谢谢。

更新:我添加了

self.view.autoresizesSubviews = true;

for (UIView *view in self.view.subviews) {
    view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth;
}

查看didload 并将旋转到界面方向。没变。

4

1 回答 1

0

我认为问题在于您通过强制更改滚动视图的 contentSize 来覆盖 autoresizingMasks。尽管您已经正确地注意到 screenSize 始终处于纵向,因此您将其尺寸反转为横向,但您正在确定在设备实际旋转之前使用哪个方向。因此,您强制 scrollView 在横向中保持纵向尺寸。

保留您的 autoresizeMask 例程并丢弃您的 willRotateToInterfaceOrientation 例程。它现在有效吗?

如果没有,请尝试将 willRotate 代码放入 *did*RotateToInterfaceOrientation。


另一个想法:

我注意到在viewDidLoad您将容器视图 ( self.view) 转换为 UIScrollView。我想知道是否最好将容器视图保留为通用 UIView,添加 UIScrollView 作为子视图,然后将文本视图添加到滚动视图。

我可能在左侧字段中,但我从未直接在容器视图级别使用滚动视图,我想知道这是否可能是问题所在。

于 2013-08-27T22:20:59.987 回答