swift - xcode 11中使用frame = bound选项时未对齐
Posted
技术标签:
【中文标题】swift - xcode 11中使用frame = bound选项时未对齐【英文标题】:Mis-aligned when use frame = bound option in swift - xcode11 【发布时间】:2020-08-23 01:07:01 【问题描述】:我是 iPhone 开发的初学者。我正在修改现有项目中的一些代码。
我在注册时有一个签名按钮,当它对齐良好时。约束设置正确。 但现在我在我的登录页面中添加了相同的代码(Apple 登录按钮代码)。但这并不好 居中并对齐。 下面是我用于添加苹果登录按钮的代码
if #available(ios 13.0, *)
let authorizationButton = ASAuthorizationAppleIDButton()
authorizationButton.addTarget(self, action: #selector(handleLogInWithAppleIDButtonPress), for: .touchUpInside)
authorizationButton.frame = self.appleSignInButton.bounds
self.appleSignInButton.addSubview(authorizationButton)
else
self.appleSignInView.isHidden = true
结果如下图。
但是当注册页面上使用相同的代码时
两个页面的约束属性也相同。
【问题讨论】:
您是否让一个按钮成为另一个按钮的子视图?还是appleSignInButton
只是一个UIView
?
【参考方案1】:
在对齐视图时不要打扰frame
s 和bounds
。让 Auto Layout 通过提供适当的约束来处理它:
let authorizationButton = ASAuthorizationAppleIDButton()
authorizationButton.addTarget(self, action: #selector(handleLogInWithAppleIDButtonPress), for: .touchUpInside)
self.appleSignInButton.addSubview(authorizationButton)
// Don't use the frame, place the view using constraints
authorizationButton.translatesAutoresizingMaskIntoConstraints = false
// Set the constraints after adding the view to the view hierarchy
NSLayoutConstraint.activate([
authorizationButton.leadingAnchor.constraint(equalTo: appleSignInButton.leadingAnchor),
authorizationButton.trailingAnchor.constraint(equalTo: appleSignInButton.trailingAnchor),
authorizationButton.topAnchor.constraint(equalTo: appleSignInButton.topAnchor),
authorizationButton.bottomAnchor.constraint(equalTo: appleSignInButton.bottomAnchor)
])
【讨论】:
谢谢。它运作良好。但仍然感到困惑,这就是为什么我的代码在注册屏幕上而不是在登录屏幕上工作。以上是关于swift - xcode 11中使用frame = bound选项时未对齐的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 11 - 在催化剂 Swift 中禁用调整大小模式
Alamofire 模块未使用 Swift 3.0.1 编译
ionic cordova build ios 使用 xcode swift 3 框架安装自定义插件失败
当我在 Xcode 11 中将 swift 4.2 转换为 swift 5 时继续加载