如何在 Swift 中将 UIButton 居中?
Posted
技术标签:
【中文标题】如何在 Swift 中将 UIButton 居中?【英文标题】:How to center UIButton in Swift? 【发布时间】:2015-09-23 14:00:24 【问题描述】:我的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)
【问题讨论】:
我想用代码而不是自动布局来了解它 您可以在代码中进行自动布局。如果您不使用/学习自动布局,那么您将落后。查找有关自动布局的教程并使用它。 :-) 只需将中心设置为视图的中心 Centering a label in a UIView的可能重复 【参考方案1】:对于您的视图的 uibutton 中心,将您的 cgrectmake 更新为 bleow..
CGRectMake((self.view.frame.size.width - 240) / 2, (self.view.frame.size.height - 40) / 2,240,40)
或
您可以在代码后添加一行
loginBtn.center = self.view.center
对于注册按钮:
signup.frame = loginBtn.bounds
signup.center = CGPointMake(loginBtn.center.x, loginBtn.center.y + loginBtn.frame.size.height + 10)
【讨论】:
谢谢,我尝试在我的代码之后添加那个简单的代码,它起作用了:) 但我现在必须按按钮,一个用于登录,一个用于注册,并且该代码使其位于中心,那么如何在登录按钮下方制作注册按钮? @mrunalthanki 如果我想将按钮设置为右侧怎么办?【参考方案2】:将您的UIButton
的center
设置在它所在的view
的中心。
loginBtn.center = view.center
【讨论】:
frame 还有一个属性叫 midX 和 midY 谢谢@LeoDabus。不知道该属性。 超级视图可能还有一个center
属性loginBtn.center = view.center
您的代码也很好用,但我现在必须按按钮,一个用于登录,一个用于注册,并且该代码位于中心,那么如何在登录按钮下方制作注册按钮?谢谢
@HusseinRedaAlBehary 提出一个新问题。您应该考虑使用自动布局。【参考方案3】:
您需要在self.view.addSubview(loginBtn)
之前添加以下行。
loginBtn.center = self.view.center
【讨论】:
但我现在必须按按钮,一个用于登录,一个用于注册,并且该代码使其位于中心,那么如何在登录按钮下方制作注册按钮?【参考方案4】:这将使按钮在整个屏幕上居中,而不仅仅是它所在的视图:
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 指出的,这可以通过使用CGRect
上的midX
和midY
属性来压缩:
let verticalCenter: CGFloat = UIScreen.mainScreen().bounds.midY
let horizontalCenter: CGFloat = UIScreen.mainScreen().bounds.midX
【讨论】:
bounds 有一个名为 midX 和 midY 的属性。 你能链接一个参考吗?我在这里找不到属性:developer.apple.com/library/prerelease/ios/documentation/… nshipster.com/cggeometry 抱歉,我在 Apple 的网站上找不到这些扩展 CGRect 扩展 CGRect var minX: CGFloat get var minY: CGFloat get var midX: CGFloat get var midY: CGFloat get var maxX: CGFloat get var maxY: CGFloat 获取 var 宽度:CGFloat var 高度:CGFloat 【参考方案5】:对于 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
【讨论】:
【参考方案6】:我发现这对我来说是最好的解决方案..
斯威夫特 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)
【讨论】:
以上是关于如何在 Swift 中将 UIButton 居中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 3 中将 UIButton 添加到我的 UITableViewCell 中?
在 Swift 中将多个 UIButton 添加到多个 UIView