如何在 ios swift 中以编程方式创建自动布局等宽约束?
Posted
技术标签:
【中文标题】如何在 ios swift 中以编程方式创建自动布局等宽约束?【英文标题】:How to create Auto layout equal width constraint programmatically in ios swift? 【发布时间】:2016-12-05 09:39:40 【问题描述】:如何通过多个视图以编程方式约束等宽和等高。我检查了谷歌,但不是通过自动布局以编程方式等宽和高度约束的完美答案。
我的代码如下所示:
var countNoOfViews:Int = 3
@IBOutlet var viewForRow1: UIView!
override func viewDidLoad()
super.viewDidLoad()
self.specialButtonViewLeft()
func specialButtonViewLeft()
for i in 0..<countNoOfViews
var customView:UIView!
customView = UIView(frame: CGRect.zero)
customView.translatesAutoresizingMaskIntoConstraints = false
viewForRow1.addSubview(customView)
let widthConstraint = NSLayoutConstraint(item: customView, attribute: .width, relatedBy: .equal,toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 20.0)
let topConstraint = NSLayoutConstraint(item: customView, attribute: .top, relatedBy: .equal,toItem: self.viewForRow1, attribute: .top, multiplier: 1.0, constant: 0)
let bottomConstraint = NSLayoutConstraint(item: customView, attribute: .bottom, relatedBy: .equal,toItem: self.viewForRow1, attribute: .bottom, multiplier: 1.0, constant: 0)
let leadingConstraint = NSLayoutConstraint(item: customView, attribute: .leading, relatedBy: .equal, toItem: self.viewForRow1, attribute: .leading, multiplier: 1, constant: customLeadingSpaceLeft)
customLeadingSpaceLeft = customLeadingSpaceLeft + customViewWidth
arrayLeftBtnConstraints.append(widthConstraint)
if i == 0
customView.backgroundColor = UIColor.red
else if i == 1
customView.backgroundColor = UIColor.green
else if i == 2
leftViewVal = customLeadingSpaceLeft
customView.backgroundColor = UIColor.black
customView.alpha = 0.50
viewForRow1.addConstraints([widthConstraint, leadingConstraint,topConstraint,bottomConstraint])
我想以编程方式添加等宽约束。
【问题讨论】:
你能完成工作吗? 【参考方案1】:您有三种可能的方式来做到这一点:
1) 通过使用锚点:
view.widthAnchor.constraint(equalTo: otherView.widthAnchor, multiplier: 1.0).isActive = true
2) 视觉格式:
简单示例 - "H:|[otherView]-[view(==otherView)]|"
3)“老派”约束:
NSLayoutConstraint(item: #view, attribute: .width, relatedBy: .equal, toItem: #otherView, attribute: .width, multiplier: 1.0, constant: 0.0).isActive = true
希望对某人有所帮助。
【讨论】:
甚至更短..view.widthAnchor.constraint(equalTo: otherView.widthAnchor).isActive = true
:)【参考方案2】:
试试这个:
let widthConstraint = NSLayoutConstraint(item: customView, attribute: .width, relatedBy: .equal, toItem: viewForRow1, attribute: .width, multiplier: 0.25, constant: 0.0)
multiplier: 0.25
,表示customView
的宽度将是父视图viewForRow1
的1/4。
【讨论】:
谢谢。但是我有多个视图将宽度相等的宽度划分为超级视图。另外,我想根据方向更改编程自动布局约束的宽度,例如纵向 - 30 和横向 - 40 宽度跨度>以上是关于如何在 ios swift 中以编程方式创建自动布局等宽约束?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 在 iOS 中以编程方式进行 segue
如何在 Swift 中以编程方式创建新的 UIViewController
如何在 ios swift 中以编程方式将情节提要视图控制器加载到标签栏控制器中?
如何在 Swift 中以编程方式创建 SplitViewController?