我在 iPad 应用程序中遇到横向模式问题。
我创建了一个非常小的新项目来展示我的问题 我将 pList 中的 UIInterfaceOrientation 设置为 UIInterfaceOrientationLandscapeRight
在应用委托(delegate)中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
MyController *myController = [[MyController alloc] init];
[self.window addSubview:myController.view];
return YES;
}
在我的 Controller 中
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"Bounds Height:%f %f", self.view.bounds.size.height, self.view.bounds.size.width);
}
我也试过将它放在 viewDidLoad 中,结果相同
如果我在横向握持设备时启动应用程序,NSLog 输出
Bounds Height: 1004.000000 Bounds Width: 768.000000
我需要做什么才能获得正确的结果? 我是这个 iOS 编程的新手,我想做的就是将 UISlider 锚定到屏幕底部,但是当我得到不正确的坐标时,我不确定该怎么做。
最佳答案
我认为这里没有回答原始问题,因为我遇到了同样的问题。
这里的关键是,如果模拟器/设备处于横向模式,然后启动程序,self.view.(frame or bounds) 会检索纵向高度和宽度。如果您的程序已经在运行,然后旋转它会给出正确的值。这仅在设备以横向启动且未旋转时发生。
有没有其他人找到解决方案或知道我做错了什么?请谢谢。
可能的解决方案
我之前一直从 viewDidLoad 方法调用我的方法。事实证明, View 仍在转换。我从 viewDidAppear 调用我的函数时运气更好,它是在一切完成后调用的。
希望对您有所帮助。
关于iphone - 在横向模式下报告不正确的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5194504/