繁体   English   中英

如何将视图高度设置为等于其宽度

[英]How to set a view height to be equal to its width

我创建了一个UIView,然后我在uiview上添加了一个约束,它的宽度等于它的superview宽度。 然后我想让这个uiview的高度等于它的宽度。 我不知道如何添加这种约束。 我可以看到我可以在此视图上添加高度约束,但如何将其值设置为等于其宽度?

将Aspect Ratio约束添加到视图中 在此输入图像描述

尝试这个:

yourView.translatesAutoresizingMaskIntoConstraints = false
yourView.addConstraint(NSLayoutConstraint(item: yourView, attribute: .Height, relatedBy: .Equal, toItem: yourView, attribute: .Equal, multiplier: 1, constant: yourWidthHere))

或者,您可以将Width Constraint和Height Constraint的IBOutlet拖到ViewController:

@IBOutlet weak var heightConstraint: NSLayoutConstraint!
@IBOutlet weak var widthConstraint: NSLayoutConstraint!

并将高度设置为宽度:

heightConstraint.constant = widthConstraint.constant

您可以从storyboard或以programmatically将视图高度设置为等于其宽度,因此您需要在具有乘数1的视图上添加aspect ratio约束。

在故事板中,您可以在故事板中借助Pin Tools添加aspect ratio约束

通过编程方式,您可以尝试下面的代码,它工作正常。

override func viewDidLoad() {
    super.viewDidLoad()

    let myView = UIView()
    myView.backgroundColor = UIColor.redColor()
    self.view.addSubview(myView)
    myView.translatesAutoresizingMaskIntoConstraints = false

    // here I'm setting the CenterX & CenterY constraint equal to its superview CenterX & CenterY
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .CenterX, relatedBy: .Equal, toItem: view, attribute: .CenterX, multiplier: 1, constant: 0))
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0))

    // here I'm setting the width constraint equal to its superview width
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .Width, relatedBy: .Equal, toItem: view, attribute: .Width, multiplier: 1, constant: 0))

    // here I'm setting the aspect ratio constraint to equal width or height of myView
    // since  aspect ratio constraint belongs to self width or height so add this constraints it self(i.e. myView) but not in its superView
    myView.addConstraint(NSLayoutConstraint(item : myView, attribute: .Width, relatedBy: .Equal, toItem: myView, attribute: .Height, multiplier: 1, constant: 0))
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM