2017-01-09 77 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) 
} 
相关问题