43243


Xcodeのストーリーボードでメールアドレス登録フォームのレイアウトを組んでいます。  
iPhone、iPad対応のレスポンシブデザインにしていきたいのですが、下記内容が実現できません。

■ 実現したい事

  * UITextFieldのwidthは親Viewの80%とする ←iPhone用
  * UITextFieldのwidthの最大値は400ポイントとする ←iPad用

といった設定を行いたいです。  
iPhoneでの表示は、横幅ほぼ一杯までUITextFieldを広げるが  
iPadでの表示の際は横幅を400ポイントを最大値とするレイアウトにしたいと考えております。

■ 質問内容  
UITextFieldのwidthは親Viewの80%とする為に  
Equal Widths ConstraintでMultiplier 0.8で設定した上で、  
widthの最大値を設定するにはどうすれば良いのでしょうか？

[![現在の設定](https://i.stack.imgur.com/VZUnR.png)](https://i.stack.imgur.com/VZUnR.png)

コードで実行時に画面サイズを取得した上で分岐を書く以外に  
ストーリーボード上で上記設定を行う方法はあるのでしょうか？

アドバイスいただけると幸いです。  
何卒宜しくお願い致します。


CC BY-SA 3.0
2018-04-14T15:42:47.587
43242
2018-04-14T20:13:58.017
28072
question
swift ios xcode autolayout
StoryBoard上で、親Viewに対するサイズ比率を設定した上で、最大値を設定する方法


解決致しました。

一つのオブジェクトに対して、widthの制約を複数つける事が出来ないと思っておりましたが、下記手順で実現出来ました。

  1. 最大幅(Less Than or Equal)を400に設定
  2. 親Viewの0.8倍の幅に設定
  3. Priorityの値を「最大幅400」 ＞ 「親Viewの0.8倍」に設定

Priorityの概念が理解出来ていなかった為に、同じオブジェクトに複数の幅制約を追加する事が出来ないとものと思っておりましたが、いただきましたアドバイスのお陰で実現する事が出来ました。  
ありがとうございました。


CC BY-SA 3.0
2018-04-14T20:13:58.017
43243
2018-04-14T20:13:58.017
28072
43242
answer