在Swift中,如何在运行时获得使用自动布局约束以编程方式创建的UIView的宽度(或高度)?
我试过view1.frame.size.width和view1.frame.width,但都返回0.
我一直在关注MakeAppPie的自动布局教程,并添加view1.layer.cornerRadius = view1.bounds.width/2如下,但这没有任何效果,所以我做了一个po   view1.bounds.width并获得0:
class ViewController: UIViewController {
func makeLayout() {
    //Make a view
    let view1 = UIView()
    view1.setTranslatesAutoresizingMaskIntoConstraints(false)
    view1.backgroundColor = UIColor.redColor()
    //Make a second view
    let view2 = UIView()
    view2.setTranslatesAutoresizingMaskIntoConstraints(false)
    view2.backgroundColor = UIColor(red: 0.75, green: 0.75, blue: 0.1, alpha: 1.0)
    //Add the views
    view.addSubview(view1)
    view.addSubview(view2)
    //--------------- constraints
    //make dictionary for views
    let viewsDictionary = ["view1":view1,"view2":view2]
    //sizing constraints
    //view1
    let view1_constraint_H:Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[view1(>=50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
    let view1_constraint_V:Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[view1(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
    view1.addConstraints(view1_constraint_H)
    view1.addConstraints(view1_constraint_V)
    //view2
    let view2_constraint_H:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:[view2(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
    let view2_constraint_V:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:[view2(>=40)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
    view2.addConstraints(view2_constraint_H)
    view2.addConstraints(view2_constraint_V)
    //position constraints
    //views
    let view_constraint_H:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:|-100-[view2]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
    let view_constraint_V:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:|-136-[view1]-100-[view2]-100-|", options: NSLayoutFormatOptions.AlignAllTrailing, metrics: nil, views: viewsDictionary)
    view.addConstraints(view_constraint_H)
    view.addConstraints(view_constraint_V)
    view1.layer.cornerRadius = view1.bounds.width/2
    }
override func viewDidLoad() {
    super.viewDidLoad()
    func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.All.rawValue)
    }
    // Do any additional setup after loading the view, typically from a nib.
    view.backgroundColor = UIColor(red: 0.9, green: 0.9, blue: 1, alpha: 1.0)
    makeLayout()
    }
}
Ste*_*erg 75
添加这个,你很高兴:
override func viewDidLayoutSubviews() {
        println(self.view1.frame.size)
    }
你可以随意看看宽度或高度.
Cra*_*aig 10
这些领域只有一点:
self.view1.frame.size.width
self.view1.frame.size.height
如果视图已被绘制到屏幕,则仅是实际的用户设备大小,否则它们就是您在故事板中设置它们的内容.因此,如果您在绘制视图之前尝试执行某种计算,则必须以另一种方式计算出宽度或高度!
小智 6
你只能用这个
self.view1.frame.size.width
self.view1.frame.size.height
| 归档时间: | 
 | 
| 查看次数: | 51532 次 | 
| 最近记录: |