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 的属性解决了该问题。

【问题讨论】:

RatingControlUIStackView 的子类)的约束、对齐和分布属性是什么? @DonMag 对齐和分布都设置为填充。 ok - 堆栈视图似乎会影响大小。我说“似乎”是因为它们的行为符合设计,只是并不总是清楚它们是如何设计的。将 Alignment 更改为 Leading 应该可以修复宽度...并将 Distribution 更改为 Equal Spacing 应该可以修复高度...但是,根据您设置约束的方式,您可能需要进行额外的调整。 哎呀... Axis 设置为 Vertical 吗?如果不是,高度和宽度可能会倒退... 通过将 Aighment 更改为Leading 并将 Distribution 更改为 Equal Spacing 正确解决了问题。谢谢。 【参考方案1】:

我有同样的问题。这是因为我没有将新的 Horizo​​ntal 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 教程)的主要内容,如果未能解决你的问题,请参考以下文章

如何使自动布局约束依赖于多个其他锚?

将完整的编程自定义视图添加到 ViewController。自动布局问题

如何调整按钮的大小?迅速

相对于堆栈视图高度约束 UIStackView 的子视图

相对于堆栈视图高度,限制UIStackView的子视图

UIImageView 缩小底部空间