iOS文本视图未在横向滚动视图中展开

时间:2013-08-27 19:31:24

标签: iphone ios objective-c uiscrollview landscape-portrait

我有一个视图,其中有一些文本视图正在按我的意愿工作。无论是横向还是纵向,都扩展到相同的右边距。

我最近尝试将普通视图更改为scrollview。尽管如此,我没有幸运能够像以前一样扩展这些文本视图。在横向模式下,所有东西都在左侧挤成一团,宽度与人像手机相同。

这是一些代码。

- (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与传递的方向与w / no参数相同,只是它使用传递的方向而不是状态栏的当前方向。

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

任何想法都会非常感激。感谢。

更新:我已添加

self.view.autoresizesSubviews = true;

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

到viewdidload和willrotatetointerfaceorientation。没有变化。

1 个答案:

答案 0 :(得分:0)

我认为问题在于您通过强制更改scrollView的contentSize来覆盖autoresizingMasks。虽然您已正确注意到screenSize始终处于纵向方向,因此您反转其横向尺寸,您将确定在设备实际旋转之前使用的方向。所以你强迫scrollView在横向上保持纵向尺寸。

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

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


另一个想法:

我注意到在viewDidLoad中您将容器视图(self.view)强制转换为UIScrollView。我想知道将容器视图保留为通用UIView,将UIScrollView添加为子视图,然后将textviews添加到滚动视图可能更好。

我可能在这里的左侧区域,但我从未在容器视图级别直接使用滚动视图,我想知道这可能是问题。