我搜索了很多有关如何在 viewDidLoad 方法中动态确定实际 View 大小的信息。
这是我的方法,它似乎适用于 iOS6 和 iOS7 的横向和纵向模式。
有更好的解决方案吗?
这是我的代码:
- (CGSize)actualSize {
CGFloat widht;
CGFloat height;
// Determin height and widht
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationLandscapeRight || orientation == UIDeviceOrientationLandscapeLeft) {
widht = kHeightSelfView;
height = kWidthSelfView;
} else {
widht = kWidthSelfView;
height = kHeightSelfView;
}
// Determin navigationbar height
CGFloat navigationBarHeight = self.navigationController.navigationBarHidden ? .0f : (MIN(self.navigationController.navigationBar.frame.size.height, self.navigationController.navigationBar.frame.size.width));
// Determin navigationbar height
CGFloat statusbarHeight = [DeviceCompatibility isIOS7] ? (MIN(SharedApplication.statusBarFrame.size.width, SharedApplication.statusBarFrame.size.height)) : .0f;
return CGSizeMake(widht, height - navigationBarHeight - statusbarHeight);
}
最佳答案
通常,您应该只在 viewWillAppear 中执行基于 View 的几何。您的 View 框架尚未在 viewDidLoad 中设置,但会在调用 viewWillAppear 之前正确设置。
关于ios - 在 viewDidLoad 上动态确定 View Controller 的 View 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194338/