Ben'in dediği gibi, UIView's
katmanı kullanarak çalışmak için a'yı kullanmanız CATransform3D
gerekir layer's
rotation
. Burada açıklandığı gibi perspektif çalışması için hile cells
, CATransform3D
(m34) matrisinden birine doğrudan erişmektir. Matris matematik hiç benim işim olmadı, bu yüzden bunun neden işe yaradığını tam olarak açıklayamıyorum, ama işe yarıyor. Bu değeri ilk dönüşümünüz için negatif bir kesire ayarlamanız ve ardından katman dönüş dönüşümlerinizi buna uygulamanız gerekir. Ayrıca aşağıdakileri de yapabilmeniz gerekir:
Objective-C
UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
Swift 5.0
if let myView = self.subviews.first {
let layer = myView.layer
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = 1.0 / -500
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0 * .pi / 180.0, 0.0, 1.0, 0.0)
layer.transform = rotationAndPerspectiveTransform
}
katman dönüşümü her dönüş için sıfırdan yeniden oluşturulur.
Bunun tam bir örneği (kodlu) burada bulunabilir , burada CALayers
Bill Dudney'nin bir örneğine dayanarak, bir kaçına dokunmaya dayalı döndürme ve ölçeklendirme uyguladım. Sayfanın en altındaki programın en yeni sürümü bu tür bir perspektif işlemi uygular. Kodun okunması oldukça basit olmalıdır.
sublayerTransform
Eğer cevap olarak adlandırdıkları, aramalarınızdan alt katmanlar uygulandığına dikkat dönüşümü olduğunu UIView's
CALayer
. Alt katmanınız yoksa endişelenmeyin. Benim örneğimde sublayerTransform'u kullanıyorum çünkü CALayers
döndürdüğüm bir katmanın içinde iki tane var .