開発メモ

開発関係のメモをいろいろと。たぶん。

AutoLayoutでViewの最大値を指定する方法

スクリーンのサイズにあわせてサイズが変更になるけど、指定されたサイズ以上にはならないViewの設定方法のメモ。

動作を確認した環境

環境 情報
Xcode 6.1.1 (6A2008a)
iOS 8.1
Swift 1.1
Date 2015/1/10

スクリーンショット

左右のエッジとの距離は16で、Viewの幅を最大568に設定した例。

f:id:see_ku:20150110231728p:plain

最大値以下なので、スクリーンサイズから決まる値が幅になる。

f:id:see_ku:20150110231747p:plain

スクリーンサイズから決まる値が最大値を超えてるので、Viewの幅は最大値に。

f:id:see_ku:20150110231807p:plain

この場合も、Viewの幅は最大値に。

設定方法

  1. 上下左右のエッジとの距離を普通に指定する
  2. サイズが変更になっても位置が決まるように、制約を設定
    中央揃えになるように指定するのが一番楽かな。
  3. 最大値を指定する方向の制約だけ、プライオリティを750に変更
  4. 幅 or 高さで最大値を指定
    指定したあと、最大値以下の指定になるように制約を修正しておく。

ポイントをまとめるとこんな感じ。

  • エッジとの距離は固定値、ただしプライオリティを下げておく
  • Viewのサイズ指定は『指定された値以下』になるようにする

具体例

  • エッジとの距離を指定した制約

f:id:see_ku:20150110231826p:plain

距離は固定で、プライオリティを下げておく。

  • 幅を指定した制約

f:id:see_ku:20150110231841p:plain

最大値以下になるように指定。

  • 水平方向の位置を指定

f:id:see_ku:20150110231856p:plain

普通に中央合わせで。

ソースコード

実際に設定したソースコードはこちら。

See_Ku / AutoLayoutTips — Bitbucket
https://bitbucket.org/See_Ku/autolayouttips

まとめ

『そもそも、こんな使い方では余ったスペースが無駄では?』って疑問への答えはまた今度。