extension UIVIEw { func applyGradIEnt() { let gradIEnt = CAGradIEntLayer() gradIEnt.colors = [UIcolor(hex: "F5FF8C").cgcolor,UIcolor(hex: "F1F99D").cgcolor,UIcolor(hex: "FDFFE0").cgcolor] gradIEnt.locations = [0.0,0.5,1.0] self.layer.insertSublayer(gradIEnt,at: 0) }}
但显然当我在vIEwDIDLoad中调用它时,这不起作用:
self.myVIEw.applyGradIEnt()
有人能指出我做错了什么吗?
解决方法 在这个问题中,你根本没有设置框架.在评论中,您的框架设置不正确.这是应该正常工作的代码:extension UIVIEw { func applyGradIEnt() { let gradIEnt = CAGradIEntLayer() gradIEnt.colors = [UIcolor.red.cgcolor,UIcolor.green.cgcolor,UIcolor.black.cgcolor] // your colors go here gradIEnt.locations = [0.0,1.0] gradIEnt.frame = self.bounds self.layer.insertSublayer(gradIEnt,at: 0) }}
使用您的代码:
使用修改后的代码:
说明
gradIEnt.frame.size = self.frame.size不起作用,而gradIEnt.frame = self.bounds则不行,因为frame属性包含视图的位置和大小,即使你设置了渐变的帧大小,你没有指定渐变的位置……所以渐变从未实际添加到视图中.通过将frame属性直接设置为视图的边界,还可以在视图中添加渐变的位置.
总结以上是内存溢出为你收集整理的ios – 如何将渐变添加到UIView作为扩展名全部内容,希望文章能够帮你解决ios – 如何将渐变添加到UIView作为扩展名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)