iphone - 在横向模式下报告不正确的边界

标签 iphone objective-c cocoa-touch uikit

我在 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/

相关文章:

iphone - 类扩展 - 无法识别的二传手

ios - 从 Storyboard加载的 View Controller 应该强还是弱?

objective-c - 如何使用 NSNotificationCenter 传递对象

iphone - 我应该多久保存一次到核心数据?

iphone - 正确使用 transitionFromViewController :toViewController:duration:options:animations:completion:

php - 将照片从iPhone上传到Web服务器

objective-c - 使用 Objective-c typedef 快速关闭的可变参数

ios - 主线程执行耗时操作如何影响UI刷新

ios - 获取自定义 uitableViewCell 的阴影?

ios - 另一个“NSInvalidArgumentException:无法识别的选择器发送到实例”帖子