用Swift制作渐变背景-正确的方法
这是我的渐变背景代码。当我在我的视图中应用它时,它会隐藏我在VC上的所有内容,就像它在前面一样,其他所有内容都会被向后推。如何创建不干扰元素的渐变视图 我使用用Swift制作渐变背景-正确的方法,swift,cagradientlayer,ibdesignable,Swift,Cagradientlayer,Ibdesignable,这是我的渐变背景代码。当我在我的视图中应用它时,它会隐藏我在VC上的所有内容,就像它在前面一样,其他所有内容都会被向后推。如何创建不干扰元素的渐变视图 我使用@IBDesignable只是想看看它在情节提要中的效果如何 import UIKit @IBDesignable class GradientView: UIView { private let gradientLayer = CAGradientLayer() var color1 = ColorPalette.G
@IBDesignable
只是想看看它在情节提要中的效果如何
import UIKit
@IBDesignable
class GradientView: UIView {
private let gradientLayer = CAGradientLayer()
var color1 = ColorPalette.GrdTop
var color2 = ColorPalette.GrdBottom
override init(frame: CGRect) {
super.init(frame: frame)
configureGradient()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
configureGradient()
}
func configureGradient() {
gradientLayer.startPoint = CGPoint(x: 0, y: 0)
gradientLayer.endPoint = CGPoint(x: 1, y: 1)
updateColors()
layer.addSublayer(gradientLayer)
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
private func updateColors() {
gradientLayer.colors = [color1.CGColor, color2.CGColor]
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
configureGradient()
}
}
就像它在前面,其他的东西都被推倒了
因为它在前面。想想你的这一行代码:
layer.addSublayer(gradientLayer)
这将梯度层置于该层所有其他子层的前面。视图的子视图由其层的子层显示,因此渐变层覆盖该视图的当前子视图
如果愿意,您可以将图层一直插入背面(
insertSublayer:atIndex:
)。不过,优雅的解决方案是实现此视图以返回CAGradientLayer。现在,您不必向GradientView添加渐变;相反,您的GradientView是一个渐变,您可以根据需要配置该渐变。如果我没有弄错的话,@Kira Arik可能还想为CAGradientLayer()设置一个掩码。
感谢您的建议,但目前我似乎很难做到这一点。我还是个初学者,所以。。。我可能得请人帮我做这件事。无论如何,谢谢你。