自动布局不适用于 Plus 型号
Posted
技术标签:
【中文标题】自动布局不适用于 Plus 型号【英文标题】:AutoLayout not working for Plus models 【发布时间】:2018-05-11 23:06:56 【问题描述】:我目前正在开发一个教育应用程序,第一个视图控制器显示主要类别,第二个(几乎像 Pinterest)显示几个子类别。我使用的自动布局非常适用于 iPhone 6、7、8 和 X,但是其中的 Plus 型号有点失真
这就是它在模型 6、7、8 和 X 中的样子
但是,当我在 Plus 模型中运行它时,它看起来像下面这样:
我有以下自动布局代码
这个自动布局对应于第一个视图控制器,我使用的是堆栈视图,因此滚动视图的高度可以根据堆栈视图的内容进行调整。
此自动布局对应于类似 Pinterest 的子类别视图控制器。我正在使用 Ryan Wenderlich 使用的代码,但是在两个视图控制器中我都使用按钮而不是使用图像,以便用户可以转到相应的部分。我以编程方式添加它们,但始终连接到单元项目原型。
如何才能使自动布局适用于 Plus 型号?
【问题讨论】:
S
Model 你是说Plus
models?
没错,例如iPhone 6S、7S和8S
您的 StackView 类型是什么?对齐和分布?
StackView 类型 = 垂直;对齐 = 填充和分布 = 等间距
不看代码很难找到问题。你能上传你的代码吗?或与我分享,我可以查看您的代码并找到问题。
【参考方案1】:
我发现了你的问题:
每个按钮都有一个Button
的标题,您应该删除默认标题。该标题推动了按钮的图像,并且由于标题为白色,您没有看到它。
你也可以通过Control > Alignment section
控制UIButton
s的图片看我附上的截图。
顺便说一句,我建议你在上面使用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
s 之一居中,我发现它与约束有关。
以编程方式设置Constraint
如下所示:
Swift | Adding constraints programmatically
【讨论】:
非常感谢!它真的帮了我很多!那么第二个视图控制器呢?哪里有像 Pinterest 这样的带有收藏视图的滚动视图?当我在 iPhone 8S 和 7S 机型上使用时,它看起来也很失真以上是关于自动布局不适用于 Plus 型号的主要内容,如果未能解决你的问题,请参考以下文章