程序化自动布局更改 UIView 的行为

Posted

技术标签:

【中文标题】程序化自动布局更改 UIView 的行为【英文标题】:Programmatic Autolayout changes behaviour of a UIView 【发布时间】:2016-02-11 09:28:49 【问题描述】:

我有一个控制器,我在其中以编程方式添加子视图。通过子视图的配置,我以编程方式添加自动布局约束。一切正常,只是如果我添加约束,视图不会对触摸做出反应,甚至设置的背景颜色也不会显示。

buttonView 应该显示在我的父视图的右下角。

有什么想法可能是错的吗?

这是我添加约束的方法:

 private func configureAutolayoutConstraints(buttonView: UIView, parentView: UIView)

        buttonView.translatesAutoresizingMaskIntoConstraints = false

        let bottomConstraint = NSLayoutConstraint(item: buttonView, attribute:
            .Bottom, relatedBy: .Equal, toItem: parentView, attribute: .Bottom, multiplier: 1.0, constant: -130)

        parentView.addConstraint(bottomConstraint)


        let trailingConstraint = NSLayoutConstraint(item: buttonView, attribute:
            .Trailing, relatedBy: .Equal, toItem: parentView, attribute: .Trailing, multiplier: 1.0, constant: -90)
        parentView.addConstraint(trailingConstraint)

    

【问题讨论】:

您需要提供至少 4 个约束才能使其工作。你只给出了底部和尾随。您还需要宽度+高度或前导+顶部约束。 没错!请把它写成一个分析器 【参考方案1】:

自动布局引擎需要至少 4 个约束来确定视图框架。您只应用了底部和尾随约束。您需要 width+height leading+top 约束才能使其工作。

【讨论】:

以上是关于程序化自动布局更改 UIView 的行为的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 运行时更改自动布局约束的 UIView 的框架

在关闭自动布局的情况下更改 UIView 的高度

如何在启用自动布局的情况下更改 iOS6 中的 UIView 大小?

UIView animateWithDuration 动画块之外的动画自动布局视图

使用自动布局动画 UIView 动画 UITableView 复选标记

如何使用自动调整大小和自动布局并更改其默认行为? [关闭]