SORU
28 Aralık 2009, PAZARTESİ


'In CALayer benim anchorPoint değişen görünüm taşır

anchorPoint alter ama aynı yerde görünüm tutmak istiyorum. NSLog-ing self.layer.position self.center denedim ve ikisi de anchorPoint değişiklikler ne olursa olsun, aynı kalır. Görünüm hareketlerimi henüz!

Bunu yapmak için nasıl bir ipucu?

self.layer.anchorPoint = CGPointMake(0.5, 0.5);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);
self.layer.anchorPoint = CGPointMake(1, 1);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);

Çıktı

2009-12-27 20:43:24.161 Type[11289:207] center point: 272.500000 242.500000
2009-12-27 20:43:24.162 Type[11289:207] center point: 272.500000 242.500000

CEVAP
28 Aralık 2009, PAZARTESİ


Temel Animasyon Programlama Kılavuzu Layer Geometry and Transforms Bölüm CALayer konumunu ve anchorPoint özellikleri arasındaki ilişkiyi açıklar. Temel olarak, bir katman konumunu katman anchorPoint yerini cinsinden belirtilir. Varsayılan olarak, katman katman merkezinde bulunan anchorPoint (0.5, 0.5). Katman konumunu ayarladığınızda, superlayer bu koordinat sistemi katmanı merkezi konumunu ayarlama.

Pozisyon tabakasının anchorPoint ilişkili olduğundan, aynı konumunu korurken, bu anchorPoint değişen tabaka taşır. Bu hareketi önlemek için, katmanın yeni anchorPoint için hesap için konumunu ayarlamak gerekir. Bir şekilde yaptım bu yakala katmanın sınırları, çarpma sınırları' genişliği ve yüksekliği ile eski ve yeni anchorPoint. normalleştirilmiş değerler, farkı iki anchorPoints ve geçerli olduğunu fark pozisyon katmanı.

Hatta UİView. CGAffineTransform CGPointApplyAffineTransform() kullanarak dönüş için bu yolu hesap etmek mümkün olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008