我有一个UITableView,它具有相同高度的单元格。当用户点击其中一个单元格然后单元格将在其底部展开时,它将显示新的部分,而不是在点击之前显示的原始单元格。如果细胞是A,B,C,D
然后点击B将使UITableView看起来像
A,B + b,C,D
(例如,如果用户点击C,则新视图'c'可以与'b'的高度不同)
其中b是与单元格B相关的UIView。
'b'中的数据将随动画扩展到其高度。
我使用autolayout构建了所有应用程序,并且我使用自动布局自动调整单元格。如何在“b”的背面添加渐变,该渐变将与“b”的内容及其上的动画一起展开?
由于
添加了一个我编写的类来包含UIView中的渐变,正如Evgeny Karkan建议的那样:
import UIKit
class UIGradient: UIView {
var colors: [UIColor]!
init(colors: [UIColor]) {
super.init(frame: CGRectZero)
self.colors = colors
self.translatesAutoresizingMaskIntoConstraints = false
}
override func layoutSubviews() {
super.layoutSubviews()
DelayUtil.delay(0.1) {
self.addGradient(self.colors)
}
}
override func didMoveToSuperview() {
if self.superview != nil {
self.stretchToBoundsOfSuperView()
self.superview?.sendSubviewToBack(self)
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
extension UIView {
func addGradient(colors: [UIColor]) -> CAGradientLayer {
let gradient = CAGradientLayer()
gradient.frame = self.bounds
gradient.startPoint = CGPointMake(0, 0.5)
gradient.endPoint = CGPointMake(1.0, 0.5)
if colors.count >= 2 {
gradient.colors = [colors[0].CGColor, colors[1].CGColor]
}
self.layer.insertSublayer(gradient, atIndex: 0)
return gradient
}
}