

UILabel以外の部品はstoryboardで作成し、storyboardでAutoLayoutを適用したのですが、UILabelをコードで生成せざるをえない状況にありまして、iphone6,iphone6plusになると位置がずれてしまいます。デフォルトのiphone5では正常な位置にあります。  
コードで生成したUILabelをihone6,iphone6plusでも理想としてる位置に生成する方法はありますでしょうか。サンプルなどで説明していただけると幸いです。


CC BY-SA 3.0
2016-02-02T08:37:23.340
21620
2016-02-04T02:46:54.743
12254
question
ios swift autolayout uilabel
UILabelのframeをコードでiphone6,iphone6plusに適用させたい


コードで生成するUILabelに、コードからAuto Layoutを設定するというのが通常の対処方法です。この方法であれば、Auto
Layoutでできる事はすべて同じように実現できます。ただ、コードでやるのは少し面倒なのがデメリットです。

少し手抜きの対応方法として、UILabelを置きたい位置にダミーのViewを設置しておく方法があります。

ダミーのViewにAuto
Layoutを設定して、最終的に必要となるUILabelの位置やサイズを満たすようにしておきます。コードからは、そのViewにUILabelをaddSubviewするようにします。

これで、UILabelの位置はダミーのViewの位置が基準となるため、位置がずれる問題に関しては対応できるかと思われます。（サイズについても、autoresizingMaskを使えば対応できたりします）

コードとしてはこんな感じになります。

[code]

    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)
        }
    }
    
[/code]


CC BY-SA 3.0
2016-02-03T09:49:34.073
21663
2016-02-04T02:46:54.743
2016-02-04T02:46:54.743
7459
7459
21620
answer