Xcode 7でAutoLayoutを使用しているときに、ビュー内に5つのサブビューを広げようと思ったのですが、私は5つのビューをcollectionViewControllerのフッターに追加しましたこれらのビューは幅の異なるデバイスに表示されている間に水平方向に均等に拡散されます。私はSO上でいくつかのスレッドを見つけることができましたが、残念ながらそれらのすべてがXcode 7で時代遅れであり、 "50評判"を持たないためコメントできないので、私の唯一の希望は自分のスレッドを作成することです。これを数時間にわたってバナナに行って、本当に助けに感謝します。AutoLayoutを使用してXcode 7の親の幅に均等に5つのサブビューを広げる
答えて
これは、AutoLayoutの非常に単純なレイアウトにする必要があります。
まず、すべてのビューの幅が同じであることを確認する必要があります。 IBでは、それらをすべて選択し、Interface Builderで「制約を追加」ボタンを使用し、「等しい幅」ボタンを押します。コードではこれはやや複雑ですが同様に可能です。
第2に、各ビューの先頭と末尾が互いに「固定」されていることを確認する必要があります。最初のビューを選択し、([制約を追加]ボタンを使用して)スーパービューの左端に固定します。次に、最初のビューから2番目のビューまでCTRL-DRAGを押し、「水平間隔」を選択します。ビューの各ペアに対してこれを繰り返します。
また、www.raywenderlich.comのサイトをご覧になることをお勧めします。そこには非常に優れたAutoLayoutチュートリアルがあります。
Phew、本当にありがとう、私は実際には、このソリューションを記述している以前の投稿のうちの1つを実際に読んでいましたが、以前は機能しませんでしたが、今回は完全にトリックでした。 IBが変更後に自分自身をリフレッシュしないと、問題が発生した可能性があります。件名に関するWenderlichのチュートリアルをチェックします。ありがとうございます。 –
@GerwazySokołowskiがお手伝いをします。うーん、それはあなたのために働いた:-) – Fogmeister
あなたが自動レイアウトを使用したいと
お使いのデバイスの境界あたりとしてビュー間を水平に等しいスペースが必要な場合は、最初にあなたのビューとスーパーとの比を計算し、スペース
末尾またはリードの乗数としてそれを適用する必要がありますする必要がありますは
が、これは確かにあなたを助ける従ってより明確に理解するために、このチュートリアルを参照してください。..
あなたはコードで追加した場合:あなたは、それが等しい与え、その後、左に最初のビューを入れてInterface Builder
を(1-5)
を使用している場合はこれが彼らの位置に基づいて制約を適用します
func constraintsForView(view: UIView, position: Int, superViewWidth: CGFloat) -> [NSLayoutConstraint] {
let views = ["view": view]
let hDistance: CGFloat = (superViewWidth/5.0) * CGFloat(position)
var constraints = [NSLayoutConstraint]()
let h = "H:|-\(hDistance)-[view]"
let v = "V:|[view]|"
let H_Constraint = NSLayoutConstraint.constraintsWithVisualFormat(h, options: [], metrics: nil, views: views) ?? [NSLayoutConstraint]()
let V_Constraint = NSLayoutConstraint.constraintsWithVisualFormat(v, options: [], metrics: nil, views: views) ?? [NSLayoutConstraint]()
constraints.appendContentsOf(H_Constraint)
constraints.appendContentsOf(V_Constraint)
constraints.append(NSLayoutConstraint(item: view, attribute: .Width, relatedBy: .Equal, toItem: view.superview, attribute: .Width, multiplier: 0.2, constant: 0))
return constraints
}
幅をスーパービューして乗数を0.2に変更した後、次のビューを追加して最初のビューに左向きに取り付け、幅を同じに戻し、5度まで同じことを続け、ちょうど上/下/左/右に置く。
私はIBを使用していますが、その生のコードソリューションを提供してくれてありがとう、将来的には非常に役に立つかもしれません。 –
サブビューを選択し、親ビューで等幅の制約を設定し、IBを使用する場合は要件ごとに乗数を編集します。あるいは、プログラムで制約を与えるだけです。
コードが添付されていないので、私はAutoLayoutで自分の経験の一部を共有します。
重要な点が2つあります。 1.オートレイアウトの仕組みと原則を十分に理解してください。 2.練習は絶対必要ですが、簡単なケースから始めなければなりません。
xibやストーリーボードを始めるのは、わかりやすく簡単です。野心的ではありません。最初は親ビューで2つのビューを均等に広げてみてください。
私はxibの練習中に自分自身で2段階の目標を設定しました。 (1)必要な制約を追加してください。すべてが矛盾なく動作していることを確認してください。 (2)できるだけ多くの制約を削除し、すべてがまだ機能していることを確認してください。
練習が終わったら、アップルの自動レイアウトロジックについて理解しているはずですが、それは最も重要なことです。
最後に、お待ちください。すべての問題には解決策があります。あなたが見つけ出すのを待っています。
私はIBでどのようにコードを提供できるかわからないので、おそらくいくつかのXMLソースですか?それでもアドバイスをいただき、ありがとうございました。実際にはこのスレッドの解決策を得ることができましたが、わかりやすいAutoLayoutロジックが完全にわかりません。 –
- 1. 私の要素を親幅に広げる
- 2. Wordpress Diviテーマを使用してMailchimpサインアップボックスの幅を広げる
- 3. マトリックスプリントアウトの幅を広げる
- 4. ブートストラップを均等に広げてdivを正しく整列させる
- 5. jfreechartを使用してバーの幅を広げます
- 6. 子の幅に基づいてdivの幅を広げる
- 7. フッターラップをページの幅に広げる
- 8. 広げる平等のチェック
- 9. ボタンの幅を列の幅に広げる方法
- 10. Icon.ToolbarAndroid内のテキストボックスの幅を広げる
- 11. CSSだけを使って線を全幅に広げる
- 12. リストを垂直方向に適切に均等に広げます
- 13. UIScrollViewサブビューを塗り幅に拡大しない(Autolayout)
- 14. 100%幅のTextareaはコンテナを塗りつぶしますが、100%幅のdivは親を広げます
- 15. アプリケーションのページ幅を広げる
- 16. Jekyllテーマのグローバル幅を広げる
- 17. ClickでDivクラスの幅を広げる
- 18. グラフストリームのエッジ幅を広げる
- 19. フォームの幅を広げる方法
- 20. ページの幅を広げるnavbarドロップダウン
- 21. JS/Jqueryでブートストラップポップオーバーの幅を広げる
- 22. Zurb Foundation 6の列全体に均一にセルを広げる
- 23. 最大幅を使用しているときCSSのテーブルの幅を広げる
- 24. 段落の幅を狭くして画面を広げる
- 25. フレックスボックスを使用して幅を均等にかつ動的に厳密に配分する
- 26. 親欄の100%の幅を均等に塗りつぶすulを取得しますか?
- 27. Plotly:幅を広げる方法Y軸?
- 28. サブメニューをブラウザウィンドウの全幅に広げる方法は?
- 29. ZPL -^BC(コード128)バーコードの幅を広げるには
- 30. 親の幅を均等に共有するように子divのサイズを自動的に調整する
インターフェイスビルダーまたはコードを使用していますか? – SeanLintern88
コードを表示します。あなたはどこに苦しんでいますか?以前のバージョンのXcode(これに関して)で動作するものは、Xcode 7でもほぼ同じように動作します。 – Fogmeister