ios - 在 viewDidLoad 上动态确定 View Controller 的 View 大小

标签 ios iphone objective-c

我搜索了很多有关如何在 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/

相关文章:

iphone - 无法在工作区的XCode 4中链接静态库

objective-c - Objective C 只读 int?什么?

ios - 如何在 UIButton 中获取 "erase to left"图标

ios - 核心数据保存进度

ios - iphone 越狱开发与公共(public) API

iphone - 如果我在 iOS 5 中创建 UIPageViewController 应用程序,那么它会在 iPhone 3G 和 iPhone 4G 上运行吗?

iphone - self.window addSubview 无法正常工作

iphone - ARC 下紧密循环中 UIKit 的内存管理

objective-c - {NSDecimalNumber integerValue} 在 iOS8 中表现异常

iOS 低功耗蓝牙连接