質問: UILabel以外の部品はstoryboardで作成し、storyboardでAutoLayoutを適用したのですが、UILabelをコードで生成せざるをえない状況にありまして、iphone6,iphone6plusになると位置がずれてしまいます。デフォルトのiphone5では正常な位置にあります。 コードで生成したUILabelをihone6,iphone6plusでも理想としてる位置に生成する方法はありますでしょうか。サンプルなどで説明していただけると幸いです。
回答: コードで生成するUILabelに、コードからAuto Layoutを設定するというのが通常の対処方法です。この方法であれば、Auto Layoutでできる事はすべて同じように実現できます。ただ、コードでやるのは少し面倒なのがデメリットです。 少し手抜きの対応方法として、UILabelを置きたい位置にダミーのViewを設置しておく方法があります。 ダミーのViewにAuto Layoutを設定して、最終的に必要となるUILabelの位置やサイズを満たすようにしておきます。コードからは、そのViewにUILabelをaddSubviewするようにします。 これで、UILabelの位置はダミーのViewの位置が基準となるため、位置がずれる問題に関しては対応できるかと思われます。(サイズについても、autoresizingMaskを使えば対応できたりします) コードとしてはこんな感じになります。 ``` class ViewController: UIViewController { /// UILabelの位置に置いたダミーのView @IBOutlet weak var baseView: UIView! override func viewDidLoad() { super.viewDidLoad() /// コードからUILabelを生成 let re = CGRect(x: 10, y: 10, width: 200, height: 60) let label = UILabel(frame: re) label.text = "Test label" baseView.addSubview(label) } } ```