【发布时间】:2021-01-24 03:08:27
【问题描述】:
我创建了一个自定义按钮类,它覆盖了 Xcode 中的默认按钮外观。我将现有故事板按钮的类分配给新的自定义类,除了按钮不再水平居中之外,一切看起来都很好。我是 Swift 编码的新手,非常感谢您的帮助。
之前
之后
这是自定义按钮类代码:
import UIKit
class CustomButton: UIButton {
let radius: CGFloat = 40
let darkGreen: UIColor = UIColor(red: CGFloat(23)/CGFloat(255),
green: CGFloat(165)/CGFloat(255),
blue: CGFloat(137)/CGFloat(255),
alpha: 1)
let lightGreen: UIColor = UIColor(red: CGFloat(112)/CGFloat(255),
green: CGFloat(232)/CGFloat(255),
blue: CGFloat(100)/CGFloat(255),
alpha: 1)
override init(frame: CGRect) {
super.init(frame: frame)
setupButton()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupButton()
}
lazy var gradient: CAGradientLayer = {
let gradient = CAGradientLayer()
gradient.type = .axial
gradient.colors = [darkGreen.cgColor, lightGreen.cgColor]
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 0)
gradient.cornerRadius = radius
return gradient
}()
func setupButton() {
frame.size = CGSize(width: 200, height: 80)
tintColor = .white
layer.cornerRadius = radius
gradient.frame = bounds
layer.addSublayer(gradient)
}
}
【问题讨论】:
-
设置约束
-
我在视图控制器中添加了以下约束,但它没有使按钮居中,
mapButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true -
我将约束更改为
mapButton.center = view.center有效,但现在按钮都在屏幕中心重叠,所以看起来我需要找到一种方法来分配 y 位置约束每个按钮。
标签: swift xcode uibutton storyboard viewcontroller