将垂直Alpha渐变应用于UITableView [英] Apply vertical alpha gradient to UITableView

查看:91
本文介绍了将垂直Alpha渐变应用于UITableView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是iOS开发的新手,正在尝试学习Swift.我想对UITableView应用垂直的Alpha渐变,但是遇到了一些麻烦.

I'm new to iOS development and am trying to learn Swift. I'd like to apply a vertical alpha gradient to a UITableView, but am having some trouble.

最初按照这篇SO帖子,以下:

var gradientMaskLayer:CAGradientLayer = CAGradientLayer()
gradientMaskLayer.frame = myTableView.bounds
gradientMaskLayer.colors = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
gradientMaskLayer.locations = [0.0, 0.05]
myTableView.layer.mask = gradientMaskLayer

收到错误Array element cannot be bridged to Objective-C并阅读此SO后帖子我修改了所使用的两个数组:

After getting the error Array element cannot be bridged to Objective-C and reading this SO post I modified the two arrays used:

var gradientMaskLayer:CAGradientLayer = CAGradientLayer()
var gradientMaskColors:NSArray = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
var gradientMaskLocations:NSArray = [0.0, 0.05]
gradientMaskLayer.frame = myTableView.bounds
gradientMaskLayer.colors = gradientMaskColors
gradientMaskLayer.locations = gradientMaskLocations
myTableView.layer.mask = gradientMaskLayer

现在得到错误Value failed to bridge from Swift type to a Objective-C type

我正在努力寻找解决方案.任何人都可以提供一些帮助吗?

I'm struggling to find a solution. Can any lend some assistance?

推荐答案

所以,我相信我可以解决您的问题,但是我不确定我是否完全理解.当您尝试创建一个隐式未包装的AnyObject数组时,似乎出现了问题,该数组只包含 个隐式未包装的Core Foundation类型,即:

So I believe I have a solution to your problem, but I'm not sure that I fully understand it. The problem seems to arise when you try to create an implicitly unwrapped AnyObject array, containing only implicitly unwrapped Core Foundation types, i.e.:

let implicitlyUnwrappedCGColor:CGColor! = UIColor.clearColor().CGColor
let implicitlyUnwrappedAnyObjectArray:[AnyObject]! = [implicitlyUnwrappedCGColor]

给出了array element cannot be bridged to Objective-C错误.

感觉这肯定是Swift编译器的问题,尤其是以下内容,其中隐式解包的CGColor被声明为隐式解包的AnyObject,似乎使编译器再次感到高兴:

It feels like this must be a Swift compiler issue, particularly as the following, where the implicitly unwrapped CGColor is declared as an implicitly unwrapped AnyObject, seems to make the compiler happy again:

let implicitlyUnwrappedCGColor:AnyObject! = UIColor.clearColor().CGColor
let implicitlyUnwrappedAnyObjectArray:[AnyObject]! = [implicitlyUnwrappedCGColor]

将标准的Objective-C对象粘贴到数组中也是如此:

as does sticking a standard Objective-C object into the array:

let implicitlyUnwrappedCGColor:CGColor! = UIColor.clearColor().CGColor
let uiColor = UIColor.clearColor()
let implicitlyUnwrappedAnyObjectArray:[AnyObject]! = [implicitlyUnwrappedCGColor, uiColor]

无论如何,请尝试以下方法解决您的问题:

In any case, try the following as a solution to your issue:

var gradientMaskLayer:CAGradientLayer = CAGradientLayer()
gradientMaskLayer.frame = myTableView.bounds
gradientMaskLayer.colors = [UIColor.clearColor().CGColor!, UIColor.blackColor().CGColor!]
gradientMaskLayer.locations = [0.0, 0.05]
myTableView.layer.mask = gradientMaskLayer

这篇关于将垂直Alpha渐变应用于UITableView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆