2017-05-28 115 views
0

我不能擁有常量,因爲屏幕大小會改變堆棧視圖的高度和寬度。我想有一個具有視圖高度和寬度的通用堆棧視圖。如何以編程方式將UIStackView設置爲佔用父視圖寬度和高度的100%?

問題是如果我得到self.view.frame.height給我0,這很奇怪,因爲我認爲我可以用它來設置stackView的高度。

這正常工作與常量,但當然我需要它是動態的基礎唐高度/寬度:

parentStack.widthAnchor.constraint(equalToConstant: 414).isActive = true parentStack.heightAnchor.constraint(equalToConstant: 250).isActive = true

回答

4

你可以用約束或與自動尺寸面具做到這一點。

如果你想使用的限制,你必須在堆棧視圖激活限制之前添加到它的父,是這樣的:如果你想使用自動尺寸面具

let rootView = ... 
rootView.addSubview(parentStack) 
rootView.addSubview(parentStack) 
parentStack.translatesAutoresizingMaskIntoConstraints = false 
NSLayoutConstraint.activate([ 
    rootView.leadingAnchor.constraint(equalTo: parentStack.leadingAnchor), 
    rootView.trailingAnchor.constraint(equalTo: parentStack.trailingAnchor), 
    rootView.widthAnchor.constraint(equalTo: parentStack.widthAnchor), 
    rootView.heightAnchor.constraint(equalTo: parentStack.heightAnchor)]) 

,你需要設置堆棧視圖的框架等於其超級視圖的邊界:

let rootView = ... 
rootView.addSubview(parentStack) 
parentStack.frame = rootView.bounds 
parentStack.translatesAutoresizingMaskIntoConstraints = true 
parentStack.autoresizingMask = [ .flexibleWidth, .flexibleHeight ] 
相關問題