如何在Swift中心UIButton?

时间:2015-09-23 14:00:25

标签: ios swift

我有UIButton的此代码。对于所有屏幕尺寸,我应该在CGRectMake中更改为将UIButton设置在屏幕中央?

let loginBtn = UIButton(frame: CGRectMake(60, 360, 240, 40))
loginBtn.layer.borderColor = UIColor.whiteColor().CGColor
loginBtn.layer.borderWidth = 2
loginBtn.titleLabel!.font = UIFont.systemFontOfSize(24)
loginBtn.tintColor = UIColor.whiteColor()
loginBtn.setTitle("Login", forState: UIControlState.Normal)
self.view.addSubview(loginBtn)

6 个答案:

答案 0 :(得分:8)

对于您所在位置的uibutton中心,请将您的cgrectmake更新为ble ..

CGRectMake((self.view.frame.size.width - 240) / 2, (self.view.frame.size.height - 40) / 2,240,40)  

您可以在代码

后添加一行
loginBtn.center = self.view.center

对于SignUp按钮:  

signup.frame = loginBtn.bounds
signup.center = CGPointMake(loginBtn.center.x, loginBtn.center.y + loginBtn.frame.size.height + 10)

答案 1 :(得分:3)

UIButton center设置为view所在的中心。

loginBtn.center = view.center

答案 2 :(得分:1)

这会使按钮在整个屏幕中居中,而不仅仅是它所在的视图:

let verticalCenter: CGFloat = UIScreen.mainScreen().bounds.size.height / 2.0
let horizontalCenter: CGFloat = UIScreen.mainScreen().bounds.size.width / 2.0

loginBtn.center = CGPoint(x: horizontalCenter, y: verticalCenter)

编辑:

正如@LeoDabus指出的那样,可以使用midX上的midYCGRect属性来压缩:

let verticalCenter: CGFloat = UIScreen.mainScreen().bounds.midY
let horizontalCenter: CGFloat = UIScreen.mainScreen().bounds.midX

答案 3 :(得分:1)

您需要在self.view.addSubview(loginBtn)之前添加以下行。

loginBtn.center = self.view.center

答案 4 :(得分:0)

适用于Swift 4

@IBOutlet weak var btStart: UIButton!

在任何屏幕(任何设备)的中间

btStart.center = self.view.center

btStart.center.x = self.view.center.x
btStart.center.y = self.view.center.y

在中心x和25%从顶部

btStart.center.x = self.view.center.x
btStart.center.y = self.view.center.y / 2

答案 5 :(得分:0)

我发现这对我来说是最好的解决方案..

Swift 4

myButton.center.x = self.view.frame.midX 
myButton.center.y = self.view.frame.midY

我发现如果我需要经常使用中心,我通常会使用通用解决方案。

extension UIViewController {
    func centerComponent(_ component: AnyObject) {
        let customView = component as! UIView
        customView.center.x = self.view.frame.midX
        customView.center.y = self.view.frame.midY
    }
}

然后你可以从像这样的函数中的任何UIViewcontroller中调用它:

centerComponent(myButton)