【发布时间】:2020-08-27 08:32:08
【问题描述】:
我正在尝试将UIButton 设置为圆形,当用户单击它时。但是当我尝试这样做时,我将UIView 的顶部变得平坦。在下面粘贴我的代码。
private enum SignInButtonState {
case clicked
case normal
}
private var currentSignInButtonState: SignInButtonState = .normal
private func updateSignInButton(to state: SignInButtonState) {
switch state {
case .clicked:
signinButton.setTitle("", for: .normal)
self.currentSignInButtonState = .clicked
UIView.animate(withDuration: 0.5) {
self.signinButton.transform = CGAffineTransform(scaleX: self.signinButton.frame.height/self.signinButton.frame.width, y: 1)
self.signinButton.layer.cornerRadius = self.signinButton.frame.height/2
}
case .normal:
signinButton.setTitle("Sign In", for: .normal)
self.currentSignInButtonState = .normal
UIView.animate(withDuration: 0.5) {
self.signinButton.transform = CGAffineTransform(scaleX: 1, y: 1)
self.signinButton.layer.cornerRadius = 5.0
}
}
}
我也试过添加
self.clipsToBounds = true
self.layer.masksToBounds = true
两者都没有帮助。尝试将形状更改为圆形时添加 UIButton 的图像(黄色按钮)
【问题讨论】:
-
你能告诉我们
currentSignInButtonState -
cornerRadius是动画属性,不需要转换。 -
@MohmmadS 添加到代码中,现在
-
@vpoltave 我使用变换来降低宽度以匹配高度。获得 1:1 的纵横比
-
你能附上你的结果图片吗?