Вычислить смещение ячейки после поворота CollectionViewCell - PullRequest
1 голос
/ 10 апреля 2019

Я хочу создать 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 Ответ

1 голос
/ 10 апреля 2019

Дано:

  • Ширина представления коллекции: w
  • Угол поворота: a

Необходим:

  • Ширина ячейки: cw

Решение:

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

Примечание: ожидается, что будет работать только в малых углах(не будет работать, если вы повернете свою ячейку на 360).Также я проверял это только в calc :).Так что вы можете проверить это дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...