2017-01-09 75 views
0

我想創建一個固定大小的寬度爲200的UIView:高度爲100,以我的視圖控制器的底部爲中心使用: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在所有視圖控制器中間居中,並且無論屏幕大小如何,它都是固定的大小。這可能嗎?

+0

是在故事板視圖?如果是這樣,只需修改高度和寬度約束,底部約束和中心x約束 –

+0

如果使用autolayout將'translatesAutoResizingMaskIntoConstraints'設置爲false並分別設置其'heightAnchor'和'widthAnchor'。如果您不使用自動佈局,請將自動調整大小的掩碼設置爲[] – HAS

+0

設置約翰建議的約束條件並將自動調整大小限制對象約束轉換爲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) 
} 
相關問題