gpt4 book ai didi

ios - 如何将一个 Storyboard用于具有自动布局(ios 6 + ios 7)的 4"and 3.5"iphone 屏幕?

转载 作者:IT王子 更新时间:2023-10-29 07:56:20 25 4
gpt4 key购买 nike

虽然关于构建适用于 4"和 3.5"屏幕尺寸的 Storyboard布局有很多问题和答案,但我找不到适合以下场景的解决方案。

我在 ios6(和 ios7)上使用自动布局,而且我不必支持 landscpae 或 ipad。我有一个带有多个 subview 的 UIView,它们必须看起来像下面的模型。很容易在 Storyboard中设置自动布局约束以适应任何一种屏幕尺寸。我的问题是 - 如何让自动布局在运行时根据屏幕尺寸选择正确的约束条件?

SCREEN MOCKUPS

请注意,我不想使用 2 个不同的 Storyboard。在我的整个应用程序中这样做将需要大量工作,而且我必须在每个 Storyboard 上连接所有委托(delegate)、导出和操作。屏幕上的变化需要我做双倍的工作。

我已经尝试了 2 种方法来在一个 Storyboard上完成这项工作,但我对其中任何一种都不满意。

  • 加倍限制。较大的约束 (50) 比较低的约束 (30) 具有更高的优先级。这种方法的问题在于,在 3.5"屏幕尺寸上,自动布局可能会选择几个较低优先级的约束——足以满足布局——但留下一些高优先级约束。

double constraints

  • 子类 NSLayoutConstraint。在这个方法中, Storyboard中的所有约束都设置为 NSDualLayoutConstraint。在 NSDualLayoutConstraint 的初始化代码中,在运行时屏幕尺寸为 3.5"的情况下,将约束的常量更改为 3_5_constant 的值。这种方法更具确定性,但在界面构建器预览中看不到 3.5"布局.

enter image description here


如果只有界面生成器约束有一个次要常量值,当屏幕尺寸为 3.5"时应用,它会解决我的问题..所以我仍然保留我的问题 - 如何正确使用单个 Storyboard 来针对 4"和 3.5"屏幕尺寸正确布局其 subview ?

最佳答案

如果您只想使用一个 Storyboard 并且不想使用自动布局,这将使您在图表中显示的内容变得更加轻松,则必须在代码中布局 View 。

您只需要检测用户是否在 4"设备上运行并相应地布局您的 View 。

#define IS_568_SCREEN (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)568) < DBL_EPSILON)

if (IS_568_SCREEN) {
// Lots of code to layout for 4" devices
} else {
// Lots of code to layout for 3.5" devices
}

但是,如果您为此使用自动版式,您会发现它会为您节省大量时间和代码。不必使用我上面提到的解决方案在代码中手动布局每个 View ,您只需根据设备更新 y 和高度约束。

考虑到这张图显示了自动版式可以为您处理什么以及您需要手动更新什么,这应该有助于更好地描绘使用自动版式可以节省多少。

enter image description here

#define IS_568_SCREEN (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)568) < DBL_EPSILON)

if (IS_568_SCREEN) {
self.layoutConstraintY.constant = 50.0f;
self.layoutConstraintHeight.constant = 248.0f;
} else {
self.layoutConstraintY.constant = 30.0f;
self.layoutConstraintHeight.constant = 220.0f;
}
[self layoutIfNeeded];

关于ios - 如何将一个 Storyboard用于具有自动布局(ios 6 + ios 7)的 4"and 3.5"iphone 屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com