私は、分布をFill Equallyに設定したIBでUIStackViewを作成しました。私は各サブビューのフレームを取得するために探しているが、次のコードは常に(0、0、0、0)を返します。UIStackViewサブフレームのフレームを取得
class ViewController: UIViewController {
@IBOutlet weak var stackView: UIStackView!
override func viewDidLoad() {
super.viewDidLoad()
let pView = UIView()
let sView = UIView()
pView.backgroundColor = UIColor.red
sView.backgroundColor = UIColor.orange
stackView.addArrangedSubview(pView)
stackView.addArrangedSubview(sView)
}
override func viewDidLayoutSubviews() {
print(stackView.arrangedSubviews[0].frame)
print(stackView.arrangedSubviews[1].frame)
}
}
私は、同じように塗りつぶすように設定されたスタックビューが自動的に計算を設定すると思うでしょう。
ご協力いただければ幸いです。
はい。レイアウトは問題ありません。 3つのオプションを使って各サブビューを非表示にして表示するオプションが必要です。 pViewだけが表示され、sViewのみが表示され、次に両方のビューが表示されます。サブビューフレーム/境界を取得する必要がある理由は、各ビューの画像の上に描画するために描画ビューをオーバーレイしたいということです。 1つのビューのみが表示されている各ビュー間を切り替えるとうまく動作しますが、両方のサブビューが表示されている場合、フレームサイズが変わり、描画ビューフレームを調整する必要があります。私は上記のコードが私にフレームを与えることを望んでいたが、それはしない。 – Wozzer
私の答えをチェックしましたか?また、スタックビューのサブビューのhiddenプロパティをアニメートすることもできます。 – agibson007