如何獲取UIView
的寬度和高度,其大小和位置是使用自動佈局和Apple的視覺格式語言設置的?使用Auto Layout和NSLayoutConstraints以編程方式檢索UIView的寬度和高度?
下面的代碼(view
距離UIViewController
變量):
// Create and add the view
var stageView = UIView()
stageView.setTranslatesAutoresizingMaskIntoConstraints(false) // Since I'm using Auto Layout I turn this off
view.addSubview(stageView)
// Create and add constraints to the containing view
let viewsDictionary = ["stageView":stageView]
let horizontalConstraints: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:|-150-[stageView]-150-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
let verticalConstraints: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:|-100-[stageView]-150-|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: viewsDictionary)
view.addConstraints(horizontalConstraints)
view.addConstraints(verticalConstraints)
println("stageView.frame=\(stageView.frame)")
,並得到:
stageView.frame=(0.0,0.0,0.0,0.0)
所以我嘗試:
let fittingSize = stageView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
println("fittingSize=\(fittingSize)")
,並得到:
fittingSize=(0.0,0.0)
我似乎無法找到獲取大小的方法。我可以使用自動佈局和視覺格式語言添加子視圖到stageView
,這很好,但我無法獲得stageView
的寬度和高度,我需要進一步定位這些子視圖。
任何想法?
嘗試添加'layoutIfNeeded'您的約束不會立即應用 – 2015-02-05 18:54:02
你說的沒錯,這個工作@阿龍的回答有更多的信息,但我覺得有些人可能會喜歡這個簡單。回答。隨意添加您的評論作爲答案,我會投兩個答案,因爲他們都對我有用。 – TenaciousJay 2015-02-06 22:23:11