前提・実現したいこと
storyboardで作成したView(スクリーンサイズにレスポンシブな制約)にコードで作成したViewやLabelなどを追加したいのですが、
表示サイクル的にどのタイミングで追加するのが適切でしょうか?
frame
を取得して、それをもとに幅、高さを指定しています。
よって、
viewDidLoad
だと親Viewの描画前なのでスクリーンサイズに対応できない。
viewWillAppear
は上と同じ。
viewWillLayoutSubview
だと複数回呼ばれるので複数描画されてしまう。(スクリーンサイズ対応前と対応したもの二つ描画される)
viewDidLayoutSubview
だとframe
が確定して期待通りに描画されるが、複数回呼ばれるメソッドだがいいのか?
viewDidAppear
だとワンテンポ遅れて描画されてしまう。
該当のソースコード
swift
1 2 @IBOutlet weak var barView: UIView! 3 4 override func viewDidLayoutSubviews() { 5 setBar() 6 } 7 8 func setBar() { 9 let width = chartView.frame.width 10 let height = chartView.frame.height 11 12 let bar = UIView(frame: CGRect(x: 0, y: 30, width: width * 0.6, height: height * 0.2)) 13 bar.backgroundColor = .orange 14 15 self.barView.addSubview(bar) 16 17 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。