如何解决在Swift中以编程方式居中按钮
我正在尝试以编程方式使Google登录和退出按钮居中。为了把它们都放在第三季度。我在Storyboard中创建了两个要在其中心放置按钮的视图。
GIDSignIn.sharedInstance()?.presentingViewController = self
GIDSignIn.sharedInstance().signIn()
let gSignIn = GIDSignInButton(frame: CGRect(x: 0,y: 0,width: loginView.frame.size.width,height: loginView.frame.size.height))
loginView.addSubview(gSignIn)
gSignIn.center = loginView.center
let gSignOut = UIButton(frame: CGRect(x: 0,width: signOutView.frame.size.width,height: signOutView.frame.size.height))
gSignOut.backgroundColor = UIColor.white.withAlphaComponent(0)
gSignOut.setTitle("Sign Out",for: .normal)
gSignOut.setTitleColor(UIColor.red,for: .normal)
gSignOut.addTarget(self,action: #selector(self.signOut(_:)),for: .touchUpInside)
gSignOut.center = signOutView.center
self.signOutView.addSubview(gSignOut)
如您所见,我也在尝试根据视图大小调整按钮大小,这有助于我根据设备大小来调整按钮大小。
这是我的故事板的下半部分。
这是我运行代码时的模拟器屏幕。
谢谢。
解决方法
使用自动布局而不是设置frame.center,它将更加灵活。
自动布局类似于下面的代码。
GIDSignIn.sharedInstance()?.presentingViewController = self
GIDSignIn.sharedInstance().signIn()
let gSignIn = GIDSignInButton(frame: CGRect(x: 0,y: 0,width: loginView.frame.size.width,height: loginView.frame.size.height))
gSignIn.translatesautoresizingmaskintoconstraints = false
loginView.addSubview(gSignIn)
NSLayoutConstraint.activate([
gSignIn.leftAnchor.constraint(equalTo: loginView.leftAnchor),gSignIn.rightAnchor.constraint(equalTo: loginView.rightAnchor),gSignIn.topAnchor.constraint(equalTo: loginView.topAnchor),gSignIn.bottomAnchor.constraint(equalTo: loginView.bottomAnchor)
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。