2016-08-16 6 views
0

まず、Swiftで達成しようとしているレイアウトのモックアップです。 MockupUIViewの制約に関する問題

そして、ここではError

だからここでの問題だ、私がこれまで持っているものです。 2番目のイメージでは、緑のUIViewがTableViewCellの高さを超えてオーバーフローすることに注意してください。

私のメインのTableViewControllerクラスでは、各セルの高さが120ピクセルで、緑のUIViewのセルの高さが10ピクセルで、後ろのセル間の区切りとして10ピクセル上にありません。

セルの高さの定義:

var itemHeight = [CGFloat](count: 2, repeatedValue: 120.0) 

UIViewの制約:UIViewのオーバーフローを引き起こしている可能性がありますどのように

foregroundView.topAnchor.constraintEqualToAnchor(foregroundView.superview?.topAnchor, constant: 10).active = true 
    foregroundView.leftAnchor.constraintEqualToAnchor(foregroundView.superview?.leftAnchor, constant: 20).active = true 
    foregroundView.widthAnchor.constraintEqualToAnchor(foregroundView.superview?.widthAnchor, constant: -40).active = true 
    foregroundView.heightAnchor.constraintEqualToConstant(110).active = true 

任意のアイデア? ありがとうございます!

あなたは

+0

なぜAutolayoutを使って細胞を構築しないのですか? – Harsh

+0

私は可能かもしれませんが、私はこの問題の背景にある既存のコードについて知りたいと思います。 – BlackDeveraux

+0

フォアグラウンドビューを追加するコードを共有することはできますか?制約? – Harsh

答えて

0

は、プロジェクトからのコードの2行を削除し、コンテキスト:)のコードを見てみたいと思います場合は私に知らせてください:

foregroundView.layoutIfNeeded() 

そして

containerView.layoutIfNeeded() 

あなたの問題の原因となっているコンテンツを時折配置することを余儀なくされています。

+0

このコードスニペットは完全に削除されました!副題として、関数_layoutIfNeeded()_はすべてのビューとサブビューの即座の再描画を必要とします。あなたは、関数がタイミングの悪いレイアウトを引き起こしていると言っています、それは関数が早すぎる/遅く呼び出される、あるいはむしろ不必要なことを意味しますか?前もって感謝します! – BlackDeveraux

+0

テーブルビューを使って作業するときには、異なる時間に何度も再描画が行われ、セルなどを再利用しています。したがって、ビュー全体とそのコンポーネント全体をレイアウトする途中で、 。次のレイアウトサイクルを待つ 'setNeedsLayout()'は問題を取り除きますが、実際にはAuto Layout自体がこの状況を処理するので、必須ではありません。 – sketchyTech