And*_*rew -4 objective-c uiviewcontroller uiview ios
在viewDidLoadUIViewController 的方法内:
NSLog(@"frame: %f %f", self.view.frame.size.width, self.view.frame.size.height);
Run Code Online (Sandbox Code Playgroud)
使用横向设备:
frame: 748.000000 1024.000000
Run Code Online (Sandbox Code Playgroud)
设备处于纵向状态:
frame: 768.000000 1004.000000
Run Code Online (Sandbox Code Playgroud)
Aar*_*ger 12
在viewDidLoad,框架可能没有调整到影响其最终尺寸的所有事物,例如旋转,其他视图等.通常最好只在这里创建和设置对象; 你可以检查最终的框架viewWillLayoutSubviews.
没有视图控制器的大小。它是视图或窗口的大小。您可以使用.frameor.bounds方法来获取它。您也可以使用以下方法轻松打印矩形,
NSLog("Frame: %@", NSStringFromCGRect(self.view.frame));
NSLog("Frame: %@", NSStringFromCGRect(self.view.window.frame));
Run Code Online (Sandbox Code Playgroud)
您还可以使用[UIScreen mainScreen].bounds来获取全屏的大小。对于状态栏,您将始终在 x 或 y 方向获得 20 像素偏移,具体取决于您的方向。
无论发生什么,框架都会返回高度和宽度,假设设备处于纵向模式,主页按钮按下。所以当设备处于横向模式时,状态栏在右侧,宽度减少 20 像素,为状态栏腾出空间。
编辑:iOS 8 之后现在您可以正确获得纵向和横向的宽度和高度。即它看起来——横向宽度=纵向高度。当我在我的代码中使用时,
CGRect frame = [[UIScreen mainScreen] applicationFrame];
CGSize size = frame.size;
if (![UIUtil isAfterIOS8]){
size.width = frame.size.height;
size.height = frame.size.width;
}
/* UIUtil.m */
+ (BOOL) isAfterIOS8 {
return [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8094 次 |
| 最近记录: |