【发布时间】:2023-03-22 19:58:01
【问题描述】:
我在 iPad 应用程序中遇到横向模式问题。
我创建了一个非常小的新项目来显示我的问题 我将 pList 中的 UIInterfaceOrientation 设置为 UIInterfaceOrientationLandscapeRight
应用内委托
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
MyController *myController = [[MyController alloc] init];
[self.window addSubview:myController.view];
return YES;
}
在我的控制器中
- (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 锚定到屏幕底部,但是当我得到不正确的坐标时,我不确定该怎么做。
【问题讨论】:
-
您是专门寻找绑定的吗? bound 和 frame 是不同的。 stackoverflow.com/questions/1210047/…
-
同时使用边界或框架给了我相同的结果。
-
这不是一个错误,而是一个特性。 Bounds 总是会给你同样的结果。因为您知道您是处于横向还是纵向模式,您仍然可以使用边界进行任何计算。这很令人困惑,但我认为它应该是这样的。
-
你实现了通常的 shouldAutorotate 方法了吗?横向启动时,状态栏是否出现在屏幕顶部?
-
bresc,你错了。看我的回答。你的意思是“框架总是一样的”吗?
标签: iphone objective-c cocoa-touch uikit