2012-01-17 14 views
6

Ekli resim olarak UIImage'ın solma köşesini/kenarını nasıl oluşturabilirim bilmek isterim.UIImage (animasyon değil) üzerinde soluk bir köşeler/kenarlar oluşturun

Bunu bir katman olarak ve aşağıdaki gibi yuvarlak köşeler içeren olarak ayarladım, ancak kodun üzerinde neler değişebiliyor ya da eğim yapabilirim?

-(void) viewDidLoad{ 
[super viewDidLoad]; 
CALayer * layer = [image layer]; 
[layer setMasksToBounds:YES]; 
[layer setCornerRadius:10.0]; 

} Çok teşekkür ederim.

enter image description here

+0

kenarları beyaz solmaya şartı mı maskelemek için aşağıdaki kodu kullanabilirsiniz şeffaflık doğru karıştırmak ya da onlar için gereken tam opak merkezi ve kenarları maske oluşturmak/şeffaf? –

+0

arka plana/saydamlığa dönüş en iyisi olacak. Teşekkürler – Clarence

cevap

6

arka plana solmaya

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef imgRef = [image CGImage]; 
    CGImageRef maskRef = [maskImage CGImage]; 
    CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
               CGImageGetHeight(maskRef), 
               CGImageGetBitsPerComponent(maskRef), 
               CGImageGetBitsPerPixel(maskRef), 
               CGImageGetBytesPerRow(maskRef), 
               CGImageGetDataProvider(maskRef), NULL, false); 
    CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

Hareket halindeyken programatik olarak aynı tür maske oluşturabilir miyim? Benim durumumda UIImage boyutu değişir ve maske her seferinde aynı boyutta olamaz! – Nil

3

resminizin boyutu (veya en-boy oranı aynı kalır) sonra muhtemelen en iyisin bir CALayer maskesi kullanarak bu uygulamaya hep aynı ise.

Zamanın ilerisinde, görüntünün merkez karesinin tamamen opak olmasını ve kenarların saydamlığa doğru karışması gerektiğini belirten bir maske resmi (photoshop veya benzeri bir araç) oluşturursunuz.

Kodda, bu resmi yükleyip orijinal görüntüyü maskelemek için kullandığınız bir CALayer maskesi oluşturursunuz.

Üzgünüz, bunun için kullanışlı bir kodum yok ama başlamanıza neden olabilir! Yukarıdaki yanıtı genişletme

İlgili konular