添加渐变的 UIButton 被切断
UIButton with added Gradient cuts off
所以我通过扩展将渐变应用于 UIButton:
extension UIButton {
func addGradient(withColors colors:[CGColor]) {
let layer_: CAGradientLayer = CAGradientLayer()
layer_.frame = self.bounds
layer_.colors = colors
layer_.shouldRasterize = true
layer_.rasterizationScale = UIScreen.main.scale
self.layer.insertSublayer(layer_, at: 0)
}
}
通过以下方式将其应用于 UIButton:
@IBOutlet weak var startButton: UIButton! {
didSet {
startButton.backgroundColor = ECConstants.GenericColors.buttonOrange
startButton.setTitleColor(UIColor.white, for: .normal)
startButton.addGradient(withColors: [UIColor.white.withAlphaComponent(0.3).cgColor, UIColor.clear.cgColor])
}
}
不幸的是,在 iPad Pro 12.9 英寸(iOS 10.1)上,它似乎缩短了按钮的宽度。我也尝试在 viewDidLoad 中应用它,但无济于事。
所以我的问题是如何让渐变贯穿整个过程?或者哪里设置渐变效果最好?
给按钮添加渐变的扩展都是正确的,需要解决的是设置渐变的地方。
移动
startButton.backgroundColor = ECConstants.GenericColors.buttonOrange
startButton.setTitleColor(UIColor.white, for: .normal)
startButton.addGradient(withColors: [UIColor.white.withAlphaComponent(0.3).cgColor, UIColor.clear.cgColor])
至viewDidAppear
或viewDidLayoutSubviews
这是因为一旦 viewDidAppear()
被调用,所有视图的大小都会被计算出来。
对于though-roughness:(支持设备旋转)
确保在 viewDidLayoutSubviews()
中重新计算子层大小。您的按钮会随着设备旋转而改变大小,因此您也需要手动更改子图层的大小。
所以我通过扩展将渐变应用于 UIButton:
extension UIButton {
func addGradient(withColors colors:[CGColor]) {
let layer_: CAGradientLayer = CAGradientLayer()
layer_.frame = self.bounds
layer_.colors = colors
layer_.shouldRasterize = true
layer_.rasterizationScale = UIScreen.main.scale
self.layer.insertSublayer(layer_, at: 0)
}
}
通过以下方式将其应用于 UIButton:
@IBOutlet weak var startButton: UIButton! {
didSet {
startButton.backgroundColor = ECConstants.GenericColors.buttonOrange
startButton.setTitleColor(UIColor.white, for: .normal)
startButton.addGradient(withColors: [UIColor.white.withAlphaComponent(0.3).cgColor, UIColor.clear.cgColor])
}
}
不幸的是,在 iPad Pro 12.9 英寸(iOS 10.1)上,它似乎缩短了按钮的宽度。我也尝试在 viewDidLoad 中应用它,但无济于事。
所以我的问题是如何让渐变贯穿整个过程?或者哪里设置渐变效果最好?
给按钮添加渐变的扩展都是正确的,需要解决的是设置渐变的地方。
移动
startButton.backgroundColor = ECConstants.GenericColors.buttonOrange
startButton.setTitleColor(UIColor.white, for: .normal)
startButton.addGradient(withColors: [UIColor.white.withAlphaComponent(0.3).cgColor, UIColor.clear.cgColor])
至viewDidAppear
或viewDidLayoutSubviews
这是因为一旦 viewDidAppear()
被调用,所有视图的大小都会被计算出来。
对于though-roughness:(支持设备旋转)
确保在 viewDidLayoutSubviews()
中重新计算子层大小。您的按钮会随着设备旋转而改变大小,因此您也需要手动更改子图层的大小。