根据设备屏幕从 xib 文件中获取大小参数

Posted

技术标签:

【中文标题】根据设备屏幕从 xib 文件中获取大小参数【英文标题】:Get size parameters from xib files depending on device screen 【发布时间】:2015-04-07 14:09:46 【问题描述】:

我有一个 xib 文件,其中 UIView 对屏幕的限制有一些限制。

由于该应用程序正在开发为在 iPad 和 iPhone 上运行,我如何在运行时获取 UIView 的大小?我已经尝试获取 UIView 插座的 size 参数,但是返回的值与最初在 xib 文件中设置的值相对应。

谢谢

【问题讨论】:

您是否尝试在出现视图之前或之后获取它?未在 viewDidLoad 上设置视图 尝试在 viewDidAppear 中获取它 我也尝试从 viewDidAppear 获取,但结果相同。 【参考方案1】:

在您的 xib 文件中,您应该设置约束以将 UIView 附加到控制器的大小。这样,根据屏幕的大小,它会自动调整到适当的大小,您就可以从代码中获取帧值。

一旦将约束设置为根据设备屏幕调整大小,您可以执行类似以下操作:

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    CGRect frame = self.mycustomview.frame; // replace with your IBOutlet

【讨论】:

嗯,有趣...尝试打印出不同区域的框架大小,并查看它们何时更改以适合屏幕。 viewWillAppearviewDidAppearviewWillLayoutSubviewsviewDidLayoutSubviews。在其中之一中,如果约束设置正确,将显示新大小...如果没有,那么可能检查所有内容是否正确连接并且约束是否正确? 在一个新项目中,它似乎可以将代码放在 viewDidLayoutSubviews 中。所以旧项目的代码一定有问题。谢谢。【参考方案2】:

在 viewDidLayoutSubviews 方法中你会找到正确的屏幕尺寸。

【讨论】:

以上是关于根据设备屏幕从 xib 文件中获取大小参数的主要内容,如果未能解决你的问题,请参考以下文章

从 Xib 加载原型单元

设置 UIImage 覆盖所有设备屏幕的屏幕,xib 文件

如何将ImageView放在Xamarin.Android应用程序中,根据设备屏幕大小自行调整大小?

在 XIB 中查看未针对不同设备调整大小

根据 iPhone 屏幕大小显示不同的 xib 文件

Xcode - 如何在不更改 UIScreen 大小的情况下添加 xib 启动屏幕