ios - TableView 的渐变

标签 ios swift uitableview gradient

我为 tableView 做了一个渐变,一切正常,但是当我向上滚动时,出现了一个黑色空间,我该如何解决,我知道这是因为我做了一个透明的 tableView在 objective-c 上是可能的

let gradient = CAGradientLayer()
var gradientSet = [[CGColor]]()
var currentGradient: Int = 0

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    gradientSet.append([gradientOne, gradientTwo])
    gradientSet.append([gradientTwo, gradientThree])
    gradientSet.append([gradientThree, gradientOne])



    gradient.frame = self.tableView.bounds
    gradient.colors = gradientSet[currentGradient]
    gradient.startPoint = CGPoint(x:0, y:0)
    gradient.endPoint = CGPoint(x:1, y:1)
    gradient.drawsAsynchronously = true
    tableView.layer.insertSublayer(gradient, at: 0)

    animateGradient()

}

func animateGradient() {
    if currentGradient < gradientSet.count - 1 {
        currentGradient += 1
    } else {
        currentGradient = 0
    }

    let gradientChangeAnimation = CABasicAnimation(keyPath: "colors")
    gradientChangeAnimation.delegate = self
    gradientChangeAnimation.duration = 5.0
    gradientChangeAnimation.toValue = gradientSet[currentGradient]
    gradientChangeAnimation.fillMode = kCAFillModeForwards
    gradientChangeAnimation.isRemovedOnCompletion = false
    gradient.add(gradientChangeAnimation, forKey: "colorChange")
}




func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
   if flag {
      gradient.colors = gradientSet[currentGradient]
      animateGradient()
   }
}

最佳答案

我建议将渐变应用于位于 TableView 后面的另一个 UIView。这可能是 ViewControllers View ,或者只是一个新的 UIView。然后您只需要确保调整 UIView 的大小以匹配表格。

关于ios - TableView 的渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46151849/

相关文章:

ios - swifty json 经常崩溃

ios - 如何在 Swift 中为 UITableview 的分隔符插入设置固定宽度?

ios - Phonegap构建错误-新应用必须使用XCode 5.1.1构建

ios - OS X 是否限制辅助线程的内存使用?

ios - 如何仅在设置数据后调用完成处理程序?

iphone - TableView不显示数据?

ios - UITableView 上的奇怪线条?

objective-c - 运动传感器,读取旋转

ios - 如何从 Swift 2.0 中的解析中获取选定的用户图像

Swift 脚本直接在 Xcode Run Script 阶段运行,但由于 NSTask/Process 而不能通过外部文件运行