当前位置: 首页 > 面试题库 >

将垂直Alpha渐变应用于UITableView

曾嘉福
2023-03-14
问题内容

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

最初跟随此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帖子后,我修改了所使用的两个数组:

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

我正在努力寻找解决方案。有什么可以帮助的吗?


问题答案:

因此,我相信您可以解决您的问题,但是不确定我是否完全理解。当您尝试创建 AnyObject包含隐式展开的CoreFoundation类型的隐式展开的数组时,似乎会出现问题: __

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

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

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

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

就像将标准的Objective-C对象粘贴到数组中一样:

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

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

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


 类似资料:
  • 问题内容: 是否可以将 div 垂直居中于%height div中 ? 问题答案: 在这里以及整个Internet上,已经被要求足够多次了。 快速搜索将为您带来大量结果。无论如何,我这样做的首选方式是使用和。

  • 本文向大家介绍使用three.js 画渐变的直线,包括了使用three.js 画渐变的直线的使用技巧和注意事项,需要的朋友参考一下 Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是

  • 我对Vert.x非常陌生,就像几天前一样。我来自一个JAX式的,安逸的世界。我可能大错特错,请指正。 我的问题是:如何使顶点公开自己的REST接口(子路由器),以及如何将其子路由器注册到应用程序的主路由器中? 我尝试过类似的东西,但是当我请求/产品/所有:( } }

  • 下面可运行示例中的箭头应该用从箭头底部到箭头头部的红色alpha渐变填充。 我一定错过了什么明显的事情!? 谢谢你的调查! Stackoverflow希望我添加更多细节,因为“大部分是代码”,但我真的不知道要添加什么。:-)

  • 问题内容: 我正在尝试将渐变用作视图(情节提要的主视图)的背景颜色。该代码运行,但没有任何变化。我正在使用xCode Beta 2和Swift。 这是代码: 然后在视图控制器中: 问题答案: 您要提供给渐变的颜色必须为类型。因此,将您的数组设置为。 正确的代码是: