【问题标题】:How to add different constraints depend on iPhone screen size?如何根据 iPhone 屏幕尺寸添加不同的约束?
【发布时间】:2017-06-05 06:30:13
【问题描述】:

这是我的 xib 文件,查看为 iPhone6/iPhone7,看起来不错。

但是如果我把它变成iPhoneSE,它就会变得异常。

因为设备改变时空格不会改变,而且我无法改变空间约束以适应设备而无需代码。

【问题讨论】:

  • 确保正确设置约束。 Read this 指南以获取有关如何执行此操作的更多信息。
  • 您希望灵活处理视图中的哪些空白?
  • 您是否尝试将您的视图宽度和高度设置为与 VC 视图成比例?

标签: ios objective-c swift cocoa-touch


【解决方案1】:

尝试以下约束:

输出:iPhone 6/7

输出:iPhone SE

更清楚地说明您的要求,以便我可以为您提供更多帮助。

【讨论】:

    【解决方案2】:

    您不必根据 iPhone 屏幕尺寸添加不同的约束!因为约束完美适用于任何屏幕尺寸

    只需在布局约束中做一个简单的修复:

    问题: 所以我看到你的 UIScrollView 高度有问题,你似乎为 UIScrollView 设置了一个固定的高度约束

    解决方案: 首先你需要删除 UIScrollView 的高度约束 其次,只需向 UISCrollView 添加一个等于父屏幕高度的高度约束并给它一个百分比

    注意: 如何在约束中放置百分比 -> 突出显示约束,然后从属性检查器中,有一个名为 Multiplier 的属性,它的取值形式为 0.0 到 1

    【讨论】:

    • UIScrollView 的高度只能依赖于内部的 ContentView。所以给它一个明确的高度是一个错误的想法。
    • 对不起,我没有提到内容视图的大小!,我们谈论的是容器大小,完全为容器视图提供明确的高度不会影响它的内容视图的大小
    【解决方案3】:

    你需要创建常量来支持所有类似的设备。

    var SCREEN_WIDTH = UIScreen.main.bounds.size.width
    var SCREEN_HEIGHT = UIScreen.main.bounds.size.height
    var BASE_SCREEN_HEIGHT:CGFloat = 667.0
    var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT)
    var ASPECT_RATIO_RESPECT_OF_7 = SCREEN_MAX_LENGTH / BASE_SCREEN_HEIGHT
    

    我想您的基本布局是 iPhone 7,您的设计位于 iPhone 7 布局中。

    现在创建一个有助于根据设备更新约束的函数。像这样。

    func updateConstraint() {
        topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7
    }
    

    在viewDidLoad中调用这个方法,你的布局就好了。

    注意: 对于横向模式,您需要根据需要进行一些更改。我假设您仅支持纵向模式。

    【讨论】:

    • 这段代码应该可以工作,我打算用代码来解决,但我想找到一种方法来通过 IBoutlet 来归档它
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多