2011-02-18 13 views
8

içine UIView işlemek için nasıl geçerli bağlam içine (kendi katman olabilir) Yani, burada MagicalFunction UIView işlemek için beklenen bir CGContextRefbir CGContext

-(void)methodName:(CGContextRef)ctx { 
    UIView *someView = [[UIView alloc] init]; 

    MagicalFunction(ctx, someView); 
} 

içine bir UIView işlemek istedim.

Bunu nasıl yaparım?

Şimdiden teşekkürler!

cevap

12

CALayer'un renderInContext yöntemi nasıl olur?

-(void)methodName:(CGContextRef)ctx { 
    UIView *someView = [[UIView alloc] init]; 
    [someView.layer renderInContext:ctx]; 
} 

DÜZENLEME: dolayı prosesinde iki koordinat sistemlerinde kökenleri bir farklılığa göre, açıklamada belirtildiği gibi, tabaka alt üst hale getirilir. Telafi etmek için, sadece içeriği dikey olarak çevirmeniz gerekir. Bu teknik olarak tek matris dönüşümü kombine edilebilir bir ölçek ve çeviri dönüşümü ile yapılır: çalışmıştır

-(void)methodName:(CGContextRef)ctx { 
    UIView *someView = [[UIView alloc] init]; 
    CGAffineTransform verticalFlip = CGAffineTransformMake(1, 0, 0, -1, 0, someView.frame.size.height); 
    CGContextConcatCTM(ctx, verticalFlip); 
    [someView.layer renderInContext:ctx]; 
} 
+0

Teşekkür! Ancak görüşler tersine işleniyor! Baska öneri? – SPatil

+0

@SPatil: Cevabı bir açıklama ile düzenledim. –

+0

, someView.layer öğesini oluşturulmadan önce nasıl taşıyacağınızı biliyor musunuz? Mesela uzun bir görüşüme sahibim, birkaç sayfadan daha fazla şey yapmam gerekiyor, bu yüzden ikinci sayfamıza sunmadan önce görünümümü ayarlamam gerekecek. – Slee

İlgili konular