我想完成一个表视图单元重叠,因为我想完成这个效果:
所以基本上细胞会堆叠在一起。我的目标是iOS7 +(目前正在使用iOS8进行测试)。
我目前正在CAGradientLayer
进行layoutSubviews
定位。我定位它:
CGRect gradientLayerFrame = self.contentView.bounds;
gradientLayerFrame.origin.y = -6.0f;
gradientLayerFrame.size.height += 6.0f;
self.gradientLayer.frame = gradientLayerFrame;
我也做了
self.clipsToBounds = NO;
self.contentView.clipsToBounds = NO;
self.contentView.superview.clipsToBounds = NO;
在init
中,这样就不会有任何内容。现在,单元格在第一次渲染时剪辑,但是当我向下滚动表格视图然后再向上滚动以便再次显示单元格时,它们不会被剪裁。
我已经尝试设置backgroundColor
以清除willDisplayCell
但没有运气。还尝试递归遍历所有单元格子视图并将裁剪设置为NO,但重复同样的事情。还尝试了黑客攻击并强行设置setNeedsDisplay
以便重新渲染事物但没有运气。
非常感谢有关此问题的任何帮助。
答案 0 :(得分:2)
它不应该是TableView。
答案 1 :(得分:1)
一段时间后我遇到了同样的问题。
对我有用的解决方案是使用Collection视图而不是TableView。通过从UICollectionViewFlowLayout扩展自定义类并在集合视图中使用它来创建自定义类。
class OverlappedCustomFlowLayout: UICollectionViewFlowLayout {
override func prepare() {
super.prepare()
// This allows us to make intersection and overlapping
// A negative number implies overlapping whereas positive implies space between the adjacent edges of two cells.
minimumLineSpacing = -100
}
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let layoutAttributes = super.layoutAttributesForElements(in: rect)
for currentLayoutAttributes: UICollectionViewLayoutAttributes in layoutAttributes! {
// zIndex - Specifies the item’s position on the z-axis.
// Unlike a layer's zPosition, changing zIndex allows us to change not only layer position,
// but tapping/UI interaction logic too as it moves the whole item.
currentLayoutAttributes.zIndex = currentLayoutAttributes.indexPath.row + 1
}
}
return layoutAttributes
}
P.S。 - 根据Apple的zIndex
开发人员文档此属性用于确定项目的前后排序 在布局期间。索引值较高的项目显示在项目的顶部 价值较低。具有相同值的项目未确定 订购。此属性的默认值为0.
希望它有所帮助! :)