iPhone 横向模式返回不正确的视图大小

Posted

技术标签:

【中文标题】iPhone 横向模式返回不正确的视图大小【英文标题】:iPhone Landscape Mode returns incorrect view sizes 【发布时间】:2010-09-16 14:22:15 【问题描述】:

在横向模式下获取视图的边界矩形会返回错误的大小:

(我知道有很多关于横向模式的帖子,但没有关于这个问题。)

从一个新的 UIView 模板项目开始,我将一个 UIView 添加到 Interface Builder 中的 ViewController(在横向模式下)并将视图大小设置为 width=400, height=200; 但是,当我在 ViewController 中添加断点时 代码: - (void)viewDidAppear:(BOOL)animated CGRect viewRect = [testView bounds]; 尺寸为 w=220,h=380! (即使屏幕上的视图清楚地是正确的)

在 myViewController.m 中我设置了:

- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation 
 return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); // home button on right

在 myAppDelegate.m 中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions     
 application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;  //home on right
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    return YES;

在 info.plist 中我设置:初始界面方向 = 横向(右主页按钮)

不是试图用 iPhone 旋转视图,它只能在横向中固定。

有解决办法吗?我需要根据正确的视图大小创建一些 CALayers。

谢谢

史蒂夫

【问题讨论】:

【参考方案1】:

听起来像是与状态栏相关的问题。那就是说我没有给你一个好的解决方案。

除了看frame,还可以看bounds。有时这会提供更好的信息。

【讨论】:

感谢您的回复。事实证明我在主视图控制器上有“自动调整子视图”。听起来很明显,但由于没有调整大小,我不知道为什么这会有所不同,但它已经解决了。

以上是关于iPhone 横向模式返回不正确的视图大小的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X 横向模式下的视图看起来不正确

UIScreen applicationFrame 在横向应用程序启动时返回不正确的矩形 (iPhone/iPad)

设置为横向模式时视图位置不正确

如何将视图从纵向模式旋转到横向模式

iphone sdk:如何正确切换控制器

iPhone正确的横向窗口坐标