こんなやつを作りたい。
Autolayoutで等間隔にビューを並べる方法はガイドに記載がある。
Auto Layout ガイド - ビューを等間隔で並べる (P.31)
ビューの等間隔配置の機能は Autolayoutの自体には無くて、それぞれのビューの間にスペーサとなるビューを入れて間隔を調整する方法を取るらしい。
なるほど。スペーサ幅を可変にして、かつ全スペーサの幅が同じになるような制約が作れればいいわけだ。
実際やってみよう。
こんな感じでビューを配置して制約を作る。
スペーサ(黄色とオレンジ色のやつ)はデバッグしやすいように色をつけて縦位置も意図的にずらしてある。
制約を作るにはコントロールキーを押しながらスペーサをクリックして、そのままドラッグしてビュー(緑色)へ接続する。
すると作成可能な制約の一覧が出てくるので Horizontal Spacing を選ぶ。
これだけ。
この操作を全てのスペーサについて行う。
また全てのスペーサが同じ幅(width)を持つように設定しておく。これは上記のようなドラッグ操作を最初のスペーサと他のスペーサ間で行い Equal Widths を選べばいい(最初のスペーサを基準にしておく)。
その他、縦位置はお好みで。例ではビューが画面縦の中央に配置するようにしてある。
これで終わり。コーディングは無し。
実行してみよう。
iPhone縦
iPhone横
iPad縦
iPad横
いい感じ。
やってみた感じではドキュメントにあるような Relation=Less than or Equal や Priority=999の設定は不要だった(むしろ設定するとうまく行かなかった。やり方がまずかったのかも)。
サンプルのソース
iOS7-Sample/AutolayoutSample2
- - - -
Autolayoutは強力だがプリミティブすぎて少しでも凝ったことをやろうとすると今のままではちょっと面倒だし難解。今後は等間隔配置のような1段上のレベルのレイアウトを支援するような機能が望まれる。例えばInterfaceBuilder上でビューを複数選んでボタンをポチると配置が完了するとか、等間隔を管理するクラスを導入するとか(これはもしかするとサードパーティから出てるかもしれない)。
登録:
コメントの投稿 (Atom)
人気の投稿(過去 30日間)
-
[前回] Cocoaの日々: [iOS] UIWebView でパワーポイントファイルを表示する エクセル、パワーポイントときたら次はワードでしょ、という訳で試してみた。 サンプル 元のファイル。Word 2004 に付いていたテンプレートを2つ組み合わせて2ページの...
-
集計指示子 以前、最大値を求めるコードを紹介した。 Cocoaの日々: Core Data - 最大値を取得する この時は -[NSExpression expressionForFunction:argument:] の第一引数に @"max:" を...
-
Blocksが使えるようになってはや数年。未だに書式が覚えられないわたし(あなた)の為に書き方をまとめてみた。 基本 基本型 戻り値 (^名前) (引数) (私が勝手に決めた)基本型はこれ。これを覚えないことには始まらない。とにかくこれだけは覚える。 戻り値と引数は一...
-
【スーパーの電卓 買い物さん】 iPhone専用 / 無料 「カゴの中身はいくら?」 「予算1000円だけどあといくら買える?」(もちろん消費税も考慮して) 「これをやめたら、あれを買えるかな?」 買物専用の電卓を作りました。 ただ、ただ、金額を入れるだけで計算完了で...
-
リファレンスを眺めていたらたまたま Event Monitor という APIを見つけた。10.6 から導入された仕組みで他のアプリのイベントをキャプチャできるらしい。 Event Monitor Cocoa Event-Handling Guide: Monitorin...
Responses
Leave a Response