中央对齐子视图

时间:2018-07-03 10:33:16

标签: swift xcode uiview subview

我正在尝试将UIView置于另一个视图的中心(如弹出视图),但是无论我做什么,我都无法使其居中对齐!

func loadPopUpView() {
    let customView = CGRect(x: view.center.x, y: view.center.y, width: 100, height: 100)
    popUpView = UIView(frame: customView)
    popUpView.backgroundColor = UIColor.black
    view.addSubview(popUpView)

    popUpView.isHidden = false
}

我已经将背景颜色更改为黑色,以便知道它何时出现。 我无法使用情节提要来执行此操作,因为该情节提要在tableView上进行,因此我尝试以编程方式进行操作。 Result Image

3 个答案:

答案 0 :(得分:0)

您还需要从x和y减去自定义视图高度和宽度的一半,如下所示:

let customView = CGRect(x: view.center.x - 50, y: view.center.y - 50, width: 100, height: 100)

答案 1 :(得分:0)

您要告诉它将左上角放在中心位置,因此您需要使它的位置缩小一半。

let customView = CGRect(x: view.center.x-50, y: view.center.y-50, width: 100, height: 100)

另一种解决方案是使用定位点。

customView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
customView.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
customView.heightAnchor.constraint(equalToConstant: 100).isActive = true
customView.widthAnchor.constraint(equalToConstant: 100).isActive = true

答案 2 :(得分:0)

CGRect(x:, y:, width:, height:)上,点(x,y)是原点。在iOS中,这是左上角。

CGRect doc上:

  

在默认的Core Graphics坐标空间中,原点位于   在矩形的左下角,矩形延伸   朝右上角。如果上下文中有一个   翻转坐标空间-通常在iOS上是这种情况-原点位于   左上角,矩形向右下延伸   角落。

因此要解决此问题:

let width = 100.0
let height = 100.0
let customViewFrame = CGRect(x: view.center.x - width/2.0, y: view.center.y - height/2.0, width: width, height: height)

另一种解决方法是在设置好帧(尤其是宽度/大小)后应​​用中心。

let customViewFrame = CGRect(x: 0, y: 0, width: 100, height: 100)
customViewFrame = view.center