旋转CollectionViewCell后计算像元偏移

时间:2019-04-09 22:37:38

标签: swift uicollectionview

我想创建具有“旋转”效果的UICollectionViewCell,我这样做是通过将其旋转到中心来实现的:

func degreesToRadians(degrees: Double) -> CGFloat {
    return CGFloat(Double.pi * (degrees / 180.0))
}

class TimbreLayout: UICollectionViewFlowLayout {

    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        var layoutAttributes = super.layoutAttributesForElements(in: rect) as! [UICollectionViewLayoutAttributes]
        for attribute in layoutAttributes {
            attribute.transform = CGAffineTransform.init(rotationAngle: degreesToRadians(degrees: -6))
        }
        return layoutAttributes
    }
}

enter image description here

到目前为止,到目前为止,我想计算出单元格旋转后可以看到的“白色”空间,因此我可以将其宽度增加相同的数量。我猜想这涉及一些数学知识,这些知识不足以应对。

1 个答案:

答案 0 :(得分:1)

给出:

  • 集合视图宽度:w
  • 旋转角度:a

需要:

  • 单元格宽度:cw

解决方案:

cw = 2 * (w / cos(a) - w)

注意::只能在较小的角度工作(如果将单元格旋转到360,则不会工作)。我也只在calc中测试了它:)。因此,您可能需要仔细检查。