UIButton 约束失败,但适用于 UILabel

Posted

技术标签:

【中文标题】UIButton 约束失败,但适用于 UILabel【英文标题】:UIButton Constraint Failure, but works with UILabel 【发布时间】:2016-04-30 06:29:57 【问题描述】:

我正在尝试将按钮实用地添加到 UIView。此代码将与 UI 标签一起使用,但在将其与按钮一起使用时,约束会失败。我怎样才能使这项工作?谢谢。

let homeButton =  UIButton(frame: CGRectZero)
    homeButton.setTitle("Home", forState: .Normal)
    homeButton.titleLabel!.textAlignment = NSTextAlignment.Center
    homeButton.titleLabel!.textColor = UIColor.whiteColor()
    homeButton.titleLabel!.translatesAutoresizingMaskIntoConstraints = false
    containerView.addSubview(homeButton)

    let buttonWidthConstraint = NSLayoutConstraint(item: homeButton, attribute: .Width, relatedBy: .Equal, toItem: self.containerView, attribute: .Width, multiplier: 0.5, constant: 0)
    containerView.addConstraint(buttonWidthConstraint)
    let buttonHeightConstraint = NSLayoutConstraint(item: homeButton, attribute: .Height, relatedBy: .Equal, toItem: self.containerView, attribute: .Height, multiplier: 0.5,constant: 0)
    containerView.addConstraint(buttonHeightConstraint)

    let buttonXConstraint = NSLayoutConstraint(item: homeButton, attribute: .CenterX, relatedBy: .Equal, toItem: self.containerView, attribute: .CenterX, multiplier: 1, constant: 0)
    let buttonYConstraint = NSLayoutConstraint(item: homeButton, attribute: .CenterY, relatedBy: .Equal, toItem: self.containerView, attribute: .CenterY, multiplier: 1, constant: 0)
    containerView.addConstraint(buttonXConstraint)
    containerView.addConstraint(buttonYConstraint)

【问题讨论】:

使用homeButton.translatesAutoresizingMaskIntoConstraints = false 那行得通。谢谢 【参考方案1】:

您应该使用homeButton.translatesAutoresizingMaskIntoConstraints = false 而不是homeButton.titleLabel!.translatesAutoresizingMaskIntoConstraints = false

因为您应该禁用 button 的自动调整掩码而不是按钮的 titleLabel !!!

希望这会有所帮助:)

【讨论】:

以上是关于UIButton 约束失败,但适用于 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:错误 1217 (23000):无法删除或更新父行:外键约束失败 - 但仅适用于 1 个 sql 文件

Typescript 索引属性约束检查适用于原始类型但不适用于对象文字?

仅适用于数值类型的泛型类型约束

如何使用百分比设置约束?

UIButton 条件适用于单个索引路径行

.NET 6 服务注册适用于具体类,但接口失败