AutoLayout 不适用于 Plus 模型

AutoLayout not working for Plus models

我目前正在开发一个教育应用程序,第一个视图控制器显示主要类别,第二个(几乎像 Pinterest)显示几个子类别。我使用的 Auto 布局非常适合 iPhone 6、7、8 和 X,但是这些的 Plus 模型有点变形

这是它在模型 6、7、8 和 X 中的样子

但是当我在 Plus 机型中 运行 时,它看起来像下面这样:

我有以下自动布局代码

这个自动布局对应于第一个视图控制器,我使用的是堆栈视图,因此滚动视图的高度可以根据堆栈视图的内容进行调整。

此自动布局对应于类似 Pinterest 的子类别视图控制器。我正在使用 Ryan Wenderlich 使用的代码,但是我没有使用图像,而是在两个视图控制器中使用按钮,以便用户可以转到相应的部分。我以编程方式添加它们,但始终连接到单元格项原型。

我怎样才能使自动布局适用于 Plus 型号?

我发现了你的问题:

每个按钮都有一个标题 Button,您应该删除默认标题。该标题按下了按钮的图像,由于标题为白色,您没有看到它。

您还可以通过 Control > Alignment section 控制 UIButton 的图像,请查看我附上的屏幕截图。

顺便说一下,我建议你在上面使用 UIImageView + UIButton 而不是使用 UIButton 的图像内容。

编辑

CollectionView 真是一团糟!它会吃掉很多内存。你们之间有很多细胞。

顺便说一下,您的第二个视图控制器问题似乎与未设置约束的 stackviews 有关。

    cell.addSubview(stackView)

    NSLayoutConstraint(item: stackView, attribute: .centerX, relatedBy: .equal, toItem: cell, attribute: .centerX, multiplier: 1, constant: 0).isActive = true
    NSLayoutConstraint(item: stackView, attribute: .centerY, relatedBy: .equal, toItem: cell, attribute: .centerY, multiplier: 1, constant: 0).isActive = true

我只是将其中一个 stackview 居中,我发现它与约束有关。

看看这个以编程方式设置 ConstraintSwift | Adding constraints programmatically