2017-09-12 13 views
1

xibファイルに複数行のラベルが含まれているため、動的に高さを変更できます。私はビューコントローラで定義されているuiviewのサブビューとしてこのビューを追加する必要があります。ここでxibファイルからロードされたサブビューに基づいてUIViewのサイズを変更

let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib) 
settlementDetailsContentView.frame = settlementDetailsView.bounds 
settlementDetailsView.addSubview(settlementDetailsContentView) 

settlementDetailsContentViewインタフェース ビルダーに設計されたビューが含まれています。決済デシールビューは、高さ制約がゼロ以上のビューコントローラで定義されたビューです。以下

コードペン先の名前に基づいてビューを返す関数である

class func instanceFromNib(nibNamed : String) -> SettlementDetailsView 
{ 
    return UINib(nibName: nibNamed, bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! SettlementDetailsView 
} 

ビューの高さはに基づいてリサイズされていないので、私がやったことに問題がsettlementdetailsview以下、そのビューがこれに重なっていますサブビュー。

これは、UI looks.Claimドキュメントが の決済詳細ビューにオーバーラップする方法です。

This is how the view looks.

これはUIViewの問題はあなたがsettlementDetailsViewのフレームを変更していないということです

enter image description here

+0

'settlementDetailsContentView'をサブビューとして追加した後に' settlementDetailsView.setNeedsLayout() 'を追加してみてください。 –

+0

サブビューが追加されたときに高さ制約をプログラムで追加できます – chirag90

+0

@laxmankhanal setNeedsLayoutが機能しません –

答えて

0

のようになります方法です。次のコード

let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib) 
settlementDetailsView.addSubview(settlementDetailsContentView) 
settlementDetailsContentView.translatesAutoresizingMaskIntoConstraints = false 
settlementDetailsContentView.topAnchor.constraint(equalTo: settlementDetailsView.topAnchor).isActive = true 
settlementDetailsContentView.bottomAnchor.constraint(equalTo: settlementDetailsView.bottomAnchor).isActive = true 
settlementDetailsContentView.trailingAnchor.constraint(equalTo: settlementDetailsView.trailingAnchor).isActive = true 
settlementDetailsContentView.leadingAnchor.constraint(equalTo: settlementDetailsView.leadingAnchor).isActive = true 

であなたはサブビューは、スーパーのフルサイズまで成長するか(このスーパーとの抱擁/圧縮の制約に依存してスーパーがサブビューのサイズに縮小していることという制約します両方、しかし、あなたに欲望の効果を与える必要があります)。

今、あなたはそれが次のようになりますどのように掲載することを、次のコードは、その達成autolayout参照

EDIT

を参照してください:もしsettlementDetailsViewが下を持っていることを

let superView = settlementDetailsView.superview! 
let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib) 
superview.addSubview(settlementDetailsContentView) 
settlementDetailsContentView.translatesAutoresizingMaskIntoConstraints = false 
settlementDetailsContentView.topAnchor.constraint(equalTo: settlementDetailsView.bottomAnchor).isActive = true 
settlementDetailsContentView.bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true 
settlementDetailsContentView.trailingAnchor.constraint(equalTo: superview.trailingAnchor).isActive = true 
settlementDetailsContentView.leadingAnchor.constraint(equalTo: superview.leadingAnchor).isActive = true 

は注意をそのスーパービューの制約を無効にする必要があります。

+0

まだ同じ問題.. UIViewは上記のスクリーンショットと同じように見えます。 –

+0

テストとして、 'settlementDetailsView'フレームを手作業で変更してみてください。また、 'settlementDetailsContentView'がスーパービューの同じフレームを持っていることを確認してください。ビューには鮮明な色が付いている可能性があります – hfehrmann

+0

決済詳細フレームを設定する必要はありますか?そして、その見方が明確な色をしているということは何を意味していますか?あなたは背景を意味しますか? –

関連する問題