/ / Otáčanie pomocou CATransform3D spôsobuje, že polovica obrázka zmizne - iphone, kremenná grafika, transformácia, calayer, catransform3d

Otáčanie CATransform3D spôsobí, že polovica obrazu zmizne - iphone, quartz-graphics, transform, calayer, catransform3d

Na otočenie obrázka používam nasledujúci kód, ale polovica obrázka (z osi y) otočeného mimo stránku zmizne. Ako to opraviť? heading je v radiánoch.

    CALayer *layer = myUIImageView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / 500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

odpovede:

32 pre odpoveď č. 1

Riešením bolo nastavenie zPosition vlastnosť všetkých mojich vrstiev primerane. Vďaka patrí @ Bradovi Larsonovi, ktorý navrhol toto riešenie v komentári tu, Zdá sa, že keď začnete používať CATransform3D, normálna hierarchia zobrazenia zindexu vytvorená pomocou addsubview sa vyhodí z okna.


5 pre odpoveď № 2
  layer.anchorPoint = CGPointMake(0.0, 0.0);

0 pre odpoveď č. 3

Nastavenie anchorPoint na {0.0, 0.0} funguje tiež (ako už zdôraznil Liam).

Tu je útržok úplného kódu na zmenu kódu anchorPoint bez zmeny polohy vrstvy na obrazovke:

     layer.anchorPoint = CGPointMake( 0.0, 0.0 );

CGPoint position = layer.position;
CGSize size = layer.bounds.size;

CGFloat posX = position.x - size.width / 2.0;
CGFloat posY = position.y - size.height / 2.0;

layer.position = CGPointMake( posX, posY );