程序化自动布局更改 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 的框架
如何在启用自动布局的情况下更改 iOS6 中的 UIView 大小?
UIView animateWithDuration 动画块之外的动画自动布局视图