Swiftを触り始めて間もない初心者です。
コードでCollectionViewに対して以下のような制約を設定するとうまくいきません。
Swift
1func setupConstraints() { 2 self.collectionView.translatesAutoresizingMaskIntoConstraints = false 3 4 self.view.addSubview(self.collectionView) 5 6 self.view.addConstraints([ 7 NSLayoutConstraint( 8 item: self.collectionView, 9 attribute: .Top, 10 relatedBy: .Equal, 11 toItem: self.navigationController!.navigationBar, 12 attribute: .Bottom, 13 multiplier: 1.0, 14 constant: 0.0 15 ), 16 NSLayoutConstraint( 17 item: self.collectionView, 18 attribute: .Leading, 19 relatedBy: .Equal, 20 toItem: self.view, 21 attribute: .Leading, 22 multiplier: 1.0, 23 constant: 0.0 24 ), 25 NSLayoutConstraint( 26 item: self.collectionView, 27 attribute: .Bottom, 28 relatedBy: .Equal, 29 toItem: self.tabBarController!.tabBar, 30 attribute: .Top, 31 multiplier: 1.0, 32 constant: 0.0 33 ), 34 NSLayoutConstraint( 35 item: self.collectionView, 36 attribute: .Trailing, 37 relatedBy: .Equal, 38 toItem: self.view, 39 attribute: .Trailing, 40 multiplier: 1.0, 41 constant: 0.0 42 ) 43 ]) 44}
やりたいことは
- ナビゲーションバーのbottomとコレクションビューのtopを合わせる
- タブバーのtopとコレクションビューのbottomを合わせる
- 左右は画面いっぱいに広げる
になります
toItem: self.navigationController!.navigationBar
toItem: self.tabBarController!.tabBar,
上記2つを設定すると以下のようにクラッシュしてしまいます
The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x7fe11e01c010 UICollectionView:0x7fe11d92c800.bottom == UITabBar:0x7fe11be17300.top>
When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] to debug.
どのように制約を設定すればいいのかご教授いただけると助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/19 15:15