首页 文章

在旋转时调整UIViewController内的全屏视图大小?

提问于
浏览
0

我在UIViewController中添加了一个webview . 我认为我可以匹配它_2653834的视图,但很快就意识到UIControllerView框架与屏幕方向无关,因此显示框架就像在纵向模式下一样(所以如果屏幕处于横向状态则错误的方式) ) . 执行 UIInterfaceOrientationIsPortrait() 不起作用,因为如果设备平躺,那么即使屏幕旋转为横向,它仍会将其报告为纵向 .

为了解决这个问题,我检查了状态栏的方向,然后使用UIScreen边界(也独立于旋转)来计算当前帧,然后删除状态栏的大小(如果它是可见的) .

CGRect frame = [UIScreen mainScreen].bounds;

BOOL isPortrait;
UIDeviceOrientation orientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) {
        isPortrait = YES;
    }
    else {
        isPortrait = NO;
    }

    if (!isPortrait) {
        frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width);
    }

if ([UIApplication sharedApplication].statusBarHidden) {
        return frame;
    }
    else {
        return CGRectMake(frame.origin.x,
                          frame.origin.y,
                          frame.size.width,
                          frame.size.height - 20);
    }

现在我遇到了另一个问题 - 即使我设置我的UIWebView进行自动调整,UIViewController的视图框架也与旋转无关,因此它不会改变,因此我的UIWebView在旋转时不会正确地改变框架 .

(奇怪的是,尽管UIViewController视图框架没有改变,但视图实际上确实正确调整了自己的大小)

我已经尝试使用方法 didRotateFromInterfaceOrientation: ,它确实调整了它的大小,但只有在完成所有旋转动画之后 .

使用 willRotateToInterfaceOrientation:duration: 会产生与之前相同的问题 - UIInterfaceOrientationIsPortrait() 不是方向的真实反映 .

有人设法做到了吗?

1 回答

  • 2

    尝试自动调整webview和viewcontroller的视图 . 或者你也可以采取另一种观点并删除viewcontroller的nib文件中的默认视图 . 自动调整该视图并连接到视图插座 .

相关问题