端末のディスプレイサイズに応じてボタンの位置を変えたい(Swift)


StoryBoard上に乗せたボタンの位置を、  
アプリ実行端末のディスプレイサイズに応じて変えたいと考えています。

位置を変えるには  
button_Save.frame.origin.y += 100  
のように設定すると良いと考えていたのですが変わりませんでした。  
どのように設定する必要があるでしょうか。  
このボタンはアウトレット接続しており、制約などは特に設定していません。

[code]

    override func viewDidLoad() {
        super.viewDidLoad()
    
        displaySize = self.view.frame.size
        if displaySize.height == 480 { //4/4S
             print("this is iPhone4/4s")
             //Do Nothing. This is base size
        }
        else if displaySize.height == 568{ //5/5S
            //保存ボタンを下にずらす
            print("this is iPhone5/5s")
            button_Save.frame.origin.y += 100
        }
    (以下略)
    }
    
[/code]




> アプリ実行端末のディスプレイサイズに応じて変えたいと考えています。

ディスプレイサイズに応じて変えたいということですが、iOS の場合 iOS 8
以降サイズクラスという仕組みが導入されました。それとオートレイアウトを使いスクリーンサイズに応じたインターフェースを簡単に作ることができます。

スクリーンサイズに応じてボタン(UIButton)の配置を変える例を説明します。

ボタンを Object Library からドラッグ＆ドロップし配置します。  
[図1](https://i.stack.imgur.com/PwyKt.png)

先程配置したボタンにコンストレイントを設定します。  
[図2](https://i.stack.imgur.com/cNCJi.png)

サイズクラスを幅を Any、高さを Compact に変更します。  
[図3](https://i.stack.imgur.com/DRe35.png)

このサイズクラスでボタンを配置したい場所へとボタンを移動させ再配置します。  
[図4](https://i.stack.imgur.com/NmGNV.png)

ボタンのコンストレイントを再設定します。まずボタンの上にマウスカーソルを持って行き、そこからコントロールキーを押しながらドラッグすると青い線を引いてこれます。この青い線をドラッグして関連付けるターゲットが
view になるようにしマウスを離します。  
[図5](https://i.stack.imgur.com/rP7NN.png)

メニュが出てくるので trailing space のコンストレイントを選択します。  
[図6](https://i.stack.imgur.com/PP4d0.png)

次にコンフリクトを起こすコンストレイントを削除します。図7で指し示している leading space
のコンストレイントを選択しデリートキーを押して削除します。  
[図7](https://i.stack.imgur.com/z7IvE.png)

以上でスクリーンサイズに応じてボタンの位置が変わるようにする設定は終わりました。  
実行してボタンの位置が変わるか見てみましょう。⌘Rで実行します。

ポートレイトでは中央左端にボタンが配置されています。  
[図8](https://i.stack.imgur.com/GpqCU.png)

ランドスケープに切り替えると中央右端にボタンが配置されます。  
[図9](https://i.stack.imgur.com/PlFBk.png)

このようにサイズクラスとオートレイアウトを使うとスクリーンサイズに合わせたインターフェースを簡単に作ることができます。

またこの例ではあるサイズクラスでコンストレイントの追加と削除を行ったように、サイズクラスでは次の点をサイズクラスごとに変更しそれぞれのスクリーンサイズに合わせてインターフェースを変化させることができます。  
* ビューの大きさと位置の変更  
* ビューの追加と削除  
* コンストレイントの変更と追加と削除  
* ラベル、テキストフィールド、テキストビュー、ボタンのフォントの変更

次の文献に詳しく解説されているので参考にしてください。  
[Adaptive User Interfaces](https://developer.apple.com/design/adaptivity/)  
[Building Adaptive Apps with UIKit - WWDC
2014](https://developer.apple.com/videos/play/wwdc2014/216/)  
[Size Classes Design
Help](https://developer.apple.com/library/ios/recipes/xcode_help-
IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html)

