2017-01-09 1 views
0

固定幅の幅:200、高さ:100を使用して、ビューコントローラの下部に中央に配置するUIViewを作成しようとしています:Swift:どのようなサイズのクラスでもビューを固定サイズにする方法

override func viewDidLayoutSubviews() { 
    var 
    self.infoView.frame = CGRect(x: view.frame.minX, y: view.frame.maxY, width: 200, height: 100) 
    super.viewDidLayoutSubviews() 
} 

しかし、このコードでは、各画面サイズでUiViewサイズが変更されており、中央に配置されていないため、目的の結果が得られません。

明確にするには、infoViewをすべてのView Controllerの中央に配置し、どの画面サイズを実行していても固定サイズにします。これは可能ですか?

+0

ビューはストーリーボードにありますか?もしそうならば、高さと幅の制​​約、下の制約と中心xの制約を修正するだけです。 –

+0

autolayoutを使うと 'translatesAutoResizingMaskIntoConstraints'をfalseに設定し、' heightAnchor'と 'widthAnchor'をそれぞれ設定します。 autolayoutを使用しない場合は、自動サイズ変更マスクを[]に設定してください。 – HAS

+0

Johnが提案する制約を設定し、translatesAutoResizingMaskIntoConstraintsをfalseに設定すると、そのトリックが完了したように見えます。みんなありがとう! –

答えて

0

はい、可能です。もちろん、Interface Builderで行うこともできますが、プログラマチックに行う場合は、ビューコントローラで動作するアイデアを以下に示します。

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    let width: CGFloat = 200 
    let height: CGFloat = 200 
    let x = (view.frame.maxX/2) - (width/2) 
    let y = (view.frame.maxY/2) - (height/2) 
    let frame = CGRect(x: x, y: y, width: width, height: height) 

    let centeredView = UIView(frame: frame) 

    centeredView.backgroundColor = UIColor.green 
    view.addSubview(centeredView) 
} 
関連する問題