heightAnchor.constraint 不起作用(使用 Swift 的 Apple FoodTracker 教程)
Posted
技术标签:
【中文标题】heightAnchor.constraint 不起作用(使用 Swift 的 Apple FoodTracker 教程)【英文标题】:heightAnchor.constraint does not work (Apple FoodTracker Tutorial using Swift) 【发布时间】:2017-10-06 12:34:50 【问题描述】:我一直在做 Apple 的 ios 教程;开始开发 iOS 应用程序。 https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ImplementingACustomControl.html#//apple_ref/doc/uid/TP40015214-CH19-SW1
在教程中,我在水平堆栈视图上添加了一个大小限制为 44.0x44.0 的按钮。 但是,模拟器会显示一个更大的按钮。
looks the size constraints do not work.
我的代码如下。可以给点建议解决吗?
class RatingControl: UIStackView
//MARK: Initialization
override init(frame: CGRect)
super.init(frame: frame)
setupButtons()
required init(coder: NSCoder)
super.init(coder: coder)
setupButtons()
//MARK: Private Methods
private func setupButtons()
let button = UIButton()
button.backgroundColor = UIColor.red
// Add constraints
button.translatesAutoresizingMaskIntoConstraints = false
button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
addArrangedSubview(button)
通过更改 StackView 的属性解决了该问题。
【问题讨论】:
RatingControl
(UIStackView
的子类)的约束、对齐和分布属性是什么?
@DonMag 对齐和分布都设置为填充。
ok - 堆栈视图似乎会影响大小。我说“似乎”是因为它们的行为符合设计,只是并不总是清楚它们是如何设计的。将 Alignment 更改为 Leading 应该可以修复宽度...并将 Distribution 更改为 Equal Spacing 应该可以修复高度...但是,根据您设置约束的方式,您可能需要进行额外的调整。
哎呀... Axis 设置为 Vertical 吗?如果不是,高度和宽度可能会倒退...
通过将 Aighment 更改为Leading 并将 Distribution 更改为 Equal Spacing 正确解决了问题。谢谢。
【参考方案1】:
我有同样的问题。这是因为我没有将新的 Horizontal StackView 拖到现有的 Vertical StackView 中。相反,我将它拖到主视图中。如果您查看 Document Outline,新的 StackView 应该是第一个 Vertical StackView 的子视图,并且位于 Photo Image View 下方。
说明中有,但我不清楚。
Correct - Screen shot of IB Wrong - Screen shot of IB【讨论】:
这也解决了问题。指示对我来说不清楚。以上是关于heightAnchor.constraint 不起作用(使用 Swift 的 Apple FoodTracker 教程)的主要内容,如果未能解决你的问题,请参考以下文章