2011-02-19 17 views
19

Bir resmi döndürmek için şu kodu kullanıyorum, ancak sayfanın "dışına çıkarılan" görüntüsünün yarısı (y ekseni boyunca) kayboluyor. Nasıl düzeltilir? heading radyan cinsindendir.CATransform3D döndürme, görüntünün yansının kaybolmasına neden oluyor

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; 
+0

Nitekim bu Z-endeksine sahip karmaşa gibi görünüyor:

İşte ekranda katmanın pozisyonunu değiştirmeden anchorPoint değiştirmek için tam kod parçacığı bu. Bu UIImageView, başka bir UIView'nin kısmen "arkasında" olan bir UIView'nin bir parçasıdır, ancak döndürmeden sonra myUIImageView her zaman en üstte çizilir. – iPadDeveloper2011

cevap

32

bu çözüm uygun tüm katmanlarının zPosition özelliğini ayarlamak oldu. Teşekkürler bu çözümü bir yorumda önerdi @Brad Larson, kaynaklanmaktadır here. Görünüşe göre, CATransform3D kullanmaya başladığınızda, addsubview tarafından oluşturulan normal zindex görünümü hiyerarşisi pencereden dışarı atılır. yanı (Liam zaten belirttiği gibi) anchorPoint{0.0, 0.0} için çalışmalarını ayarlama

5
layer.anchorPoint = CGPointMake(0.0, 0.0); 
0

.

 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);