当前位置:   iOS > 正文

在UITableviewcell swift中设置水平渐变

gradient,uitableview,ios,cagradientlayer,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我想在每个单元格上从左到右创建一个水平渐变我使用CAGradientLayey来创建自定义图层并将此图层添加到tableview单元格

这是我在swift中的代码

  func gradient(frame:CGRect) -> CAGradientLayer {
    let layer = CAGradientLayer()
    layer.frame = frame
    print(frame)
    layer.startPoint = CGPointMake(0,0.5)
    layer.endPoint = CGPointMake(1,0.5)
    layer.colors = [ UIColor.redColor().CGColor,UIColor.blueColor().CGColor]
    return layer
}

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) {
        cell.layer.addSublayer(gradient(cell.frame))
           cell.textLabel?.textColor = UIColor(red:0, green:0.102, blue: 0.2, alpha: 1)

}

但是渐变并不覆盖所有tableview单元格,它在渐变单元格和正常单元格背景颜色之间切换,似乎渐变覆盖了单元格文本.我不知道我做错了什么

有什么建议吗?谢谢



1> Mohammed Sha..:

而不是使用frame,使用bounds单元格,也在insertSublayer索引0,所以它将落后于包括你的标签在内的所有其他层

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) {
        cell.layer.insertSublayer(gradient(cell.bounds), atIndex:0)
        cell.backgroundColor = UIColor.clearColor()
        cell.textLabel?.textColor = UIColor(red:0, green:0.102, blue: 0.2, alpha: 1)            
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8858
推荐阅读
相关标签
  

闽ICP备14008679号