gpt4 book ai didi

ios - 在旋转时调整 UIViewController 内的全屏 View 大小?

转载 作者:行者123 更新时间:2023-11-28 22:34:44 24 4
gpt4 key购买 nike

我向 UIViewController 添加了一个 webview。我假设我可以将它的大小与 UIViewController 的 View 相匹配,但很快意识到 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 的 View 框架与旋转无关,因此它不会改变,因此我的 UIWebView 不会在旋转时正确改变框架。

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

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

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

有人设法做到这一点吗?

最佳答案

尝试自动调整 webview 和 viewcontroller 的 View 。或者您也可以使用另一个 View 并删除 viewcontroller 的 nib 文件中的默认 View 。自动调整该 View 的大小并连接到 View socket 。

关于ios - 在旋转时调整 UIViewController 内的全屏 View 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16416978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com