stackViewで横並びと縦並びの入れ子をコードで書きたいのですが
入れ子の書き方が分からず、教えてください。
今段階では、横並びのスタックビューはかけています。
// StackView を作る let stack:UIStackView = UIStackView() stack.backgroundColor = UIColor.purple view.addSubview(stack) stack.translatesAutoresizingMaskIntoConstraints = false // オートレイアウトオフ stack.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true // 横方向の中心は、親ビューの横方向の中心と同じ stack.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true // 縦方向の中心は、親ビューの縦方向の中心と同じ // 画面の大きさを取得 let screenWidth = Int( UIScreen.main.bounds.size.width); let screenHeight = Int(UIScreen.main.bounds.size.height); // 上のラベル let myView = UIView() myView.backgroundColor = UIColor.gray myView.translatesAutoresizingMaskIntoConstraints = false myView.widthAnchor.constraint(equalToConstant: CGFloat(screenWidth/4)).isActive = true myView.heightAnchor.constraint(equalToConstant: 50).isActive = true let myView2 = UIView() myView2.backgroundColor = UIColor.purple myView2.translatesAutoresizingMaskIntoConstraints = false myView2.widthAnchor.constraint(equalToConstant: CGFloat(screenWidth/4)).isActive = true myView2.heightAnchor.constraint(equalToConstant: 50).isActive = true let myView3 = UIView() myView3.backgroundColor = UIColor.red myView3.translatesAutoresizingMaskIntoConstraints = false myView3.widthAnchor.constraint(equalToConstant: CGFloat(screenWidth/4)).isActive = true myView3.heightAnchor.constraint(equalToConstant: 50).isActive = true let myView4 = UIButton() myView4.backgroundColor = UIColor.green myView4.translatesAutoresizingMaskIntoConstraints = false myView4.widthAnchor.constraint(equalToConstant: CGFloat(screenWidth/4)).isActive = true myView4.heightAnchor.constraint(equalToConstant: 50).isActive = true // 画像 let image:UIImage = UIImage(named:"menu")! let imageView = UIImageView(image:image) myView4.addSubview(imageView) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.centerXAnchor.constraint(equalTo: myView4.centerXAnchor).isActive = true imageView.centerYAnchor.constraint(equalTo: myView4.centerYAnchor).isActive = true imageView.contentMode = UIView.ContentMode.scaleAspectFit stack.addArrangedSubview(myView) stack.addArrangedSubview(myView2) stack.addArrangedSubview(myView3) stack.addArrangedSubview(myView4)
とりあえず以下は間違っています。
stack.translatesAutoresizingMaskIntoConstraints = false // オートレイアウトオフ
これはAutosizingのレイアウトの仕組みをAuto Layoutに変換するかどうかを設定するフラグなので
オートレイアウトはオフになりません。
( https://developer.apple.com/documentation/uikit/uiview/1622572-translatesautoresizingmaskintoco )
回答1件
あなたの回答
tips
プレビュー