iOS 11 之前的前导或尾随水平对齐

leading or trailing horizontal alignment before iOS 11

警告:leading or trailing horizontal alignment before iOS 11

我在 Xcode 9.1 上编译期间在情节提要文件中的一个场景中收到以上警告。还有其他情节提要 (部署目标 iOS 10.0) 但警告显示在特定情节提要文件的特定场景中。

如果我在显示警告的场景中将部署目标更改为 iOS 11.0,但我不想那样做,警告就会被抑制。

有人遇到过这种情况吗?

对我来说,问题在于在 UIButton 本身上使用 trailing leading 对齐方式。

安全区域似乎完全可以使用 - 它向后兼容并且可以转换为适当的超级视图边距。

但此功能仅限 iOS 11,因此如果您的目标是较低的 iOS 版本,请改用标准左/右对齐。

找出导致问题的视图的最简单方法是在 .xib

的源代码中搜索 contentHorizontalAlignment="leading"contentHorizontalAlignment="trailing"

第 1 步:

以源代码形式查看您的违规情节提要:

第 2 步:

替换所有实例:

contentHorizontalAlignment="leading"

与:

contentHorizontalAlignment="left"

第 3 步:

替换所有实例:

contentHorizontalAlignment="trailing"

与:

contentHorizontalAlignment="right"

第 4 步:

编译并观察警告消失。

当您有大量需要修改的元素时,我发现这种方法更容易。 "leading" 和 "trailing" 作为 'contentHorizontalAlignment' 值类型是在 iOS 11 中引入的。iOS 10 不知道 "leading" 和 "trailing" 这就是警告的原因。

在构建日志中,就在单词 "warning" 之前,您将看到一个 Interface Builder 标识符,格式为 "xxx-yy-zzz"。将其复制并粘贴到 Xcode 搜索栏中,它会为您找到 "offending" 控件。单击搜索结果,您将直接进入故事板并选择了相应的控件。其余问题可以使用其他答案解决。

我遇到了一大堆按钮的问题,我需要将它们左对齐并稍作偏移。我删除了故事板对齐方式,并在 viewDidLoad 中使用一组需要的按钮来完成它。

func indentButtons(buttons: [UIButton?]){
    for i in 0..<buttons.count{
        buttons[i]!.contentHorizontalAlignment = .left
        buttons[i]!.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0)
    }
}