我有渐变(透明 - 黑色)应用于图像视图,在它上面我有一个浮动按钮。一切正常。唯一的问题是,每当点击浮动按钮时,渐变就会开始越来越多地增加到黑色。我的渐变从上到下都是黑色的。但在互动中,它开始慢慢变黑,走向上行。
我真的无法解决这个错误。
此图像视图位于 UIcollectionResuableView 中。下面是下面的代码。
func addBlackGradientLayerprof(frame: CGRect){
let gradient = CAGradientLayer()
gradient.frame = frame
let black = UIColor.init(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.65).cgColor
gradient.colors = [UIColor.clear.cgColor, black]
gradient.locations = [0.0, 1.0]
self.layer.addSublayer(gradient)
}
带有浮动按钮的标题视图:
override func layoutSubviews() {
super.layoutSubviews()
profilePic.addBlackGradientLayerprof(frame: profilePic.bounds)
}
override func awakeFromNib() {
super.awakeFromNib()
layoutFAB()
}
func layoutFAB() {
floaty.openAnimationType = .slideDown
floaty.addItem("New Post", icon: UIImage(named: "photo-camera")) { item in
self.delegate.fabUploadClicked()
}
floaty.addItem("Settings", icon: UIImage(named: "settingsB")) { item in
self.delegate.fabSettingsClicked()
}
floaty.paddingY = (frame.height - 30) - floaty.frame.height/2
floaty.fabDelegate = self
floaty.buttonColor = UIColor.white
floaty.hasShadow = true
floaty.size = 45
addSubview(floaty)
}
>除了根据需要调整几帧之外,layoutSubviews
做任何事情都是不好的地方。它可以在视图的生命周期中多次调用。不应从 layoutSubviews
添加图层。
应从保证在对象的生存期内仅调用一次的位置调用addBlackGradientLayerprof
。 awakeFromNib
将是一个可能的地方。