0

я сделать поворот на 180 градусов по кодуWiered CollectionView кадр происхождения, если преобразование 180 Degres

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewLayoutAttributes *retAttr = [[super layoutAttributesForItemAtIndexPath:indexPath] copy]; 

    if (CGAffineTransformIsIdentity(retAttr.transform)) { 
     retAttr.transform = CGAffineTransformMakeRotation(M_PI); 
    } 

    retAttr.frame = CGRectMake(0, retAttr.frame.origin.y, self.collectionView.bounds.size.width, retAttr.frame.size.height); 
    return retAttr; 
} 

кадров по CGRectMake

(origin = (x = 0, y = 3658), size = (width = 320, height = 1077.5)) 

Но я получил

(lldb) po retAttr.frame 
(origin = (x = -0.000000000000056843418860808015, y = 3658), size = (width = 320.00000000000011, height = 1077.5)) 

И клетки исчезают из экран.

Как правильно повернуть или назначить фрейм на х, не сломается и ширина тоже?

ответ

0

Я нашел решение "не использовать аффинное преобразование", вместо этого я использую 3dTransform

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewLayoutAttributes *retAttr = [[super layoutAttributesForItemAtIndexPath:indexPath] copy]; 

    if (CATransform3DIsIdentity(retAttr.transform3D)) { 
     retAttr.transform3D = CATransform3DMakeRotation(M_PI, 0, 0, 1); 
    } 

    return retAttr; 
} 

Теперь все в порядке.

Смежные вопросы