我只是想将Gradient应用于2个UIColors,这就是我编写下面代码的原因。
class Constants: NSObject {
class func applyGradient(localView:UIView, color1:UIColor, color2:UIColor) {
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = localView.bounds
gradient.colors = [color1.CGColor, color2.CGColor]
gradient.startPoint = CGPoint(x: 0,y: 0)
gradient.endPoint = CGPoint(x: 0,y: 1)
localView.layer.insertSublayer(gradient, atIndex: 0)
localView.layer.masksToBounds = true
}
}
并通过下面的代码在UIViewController的viewDidLoad中应用。
Constants.applyGradient(viewContactDetail, color1: gradientColor1, color2: gradientColor2)
Constants.applyGradient(viewDiscountDetail, color1: gradientColor1, color2: gradientColor2)
Constants.applyGradient(viewTermsCondDetail, color1: gradientColor1, color2: gradientColor2)
Constants.applyGradient(viewDiscountAvailDetail, color1: gradientColor1, color2: gradientColor2)
这就是我得到的结果
您可以看到,Gradient不适用于特定视图。 我没有弄错我的代码。
答案 0 :(得分:2)
试试这个....希望它对你有所帮助
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.shadowview.bounds
let colorTop = UIColor.green.cgColor
let colorBottom = UIColor.black.cgColor
gradientLayer.colors = [colorTop, colorBottom]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
gradientLayer.locations = [ 0.0, 1.0]
self.shadowview.layer.addSublayer(gradientLayer)
答案 1 :(得分:0)
你也可以尝试这个简单的代码,你可以给出渐变图层的框架并给出颜色
let gradient1 = CAGradientLayer()
gradient1.frame = CGRect(origin: CGPointZero, size: CGSize (width: self.view.frame.size.width,height: btn_cancel.frame.size.height))
gradient1.colors = [UIColor.whiteColor().CGColor, UIColor.init(red: 237.0/255.0, green: 237.0/255.0, blue: 237.0/255.0, alpha: 1.0).CGColor]
print(gradient1.frame)
只需将该图层添加到视图
即可 "YOUR VIEW".layer.addSublayer(gradient1)
在Image中您可以看到我添加了渐变图层到按钮,因此您可以在视图或任何其他控件中添加相同内容
答案 2 :(得分:0)
在设置框架之前调用layoutIfNeeded()
为我工作。如果在您的情况下如果不想调用此尝试,请尝试使用willDisplayCell
设置bool,该bool将仅首次应用并且帧已准备就绪。