2013-01-02 19 views
5

here gönderdiği yanıtı denedikten sonra, retina ekranında geri dönen görüntü kalitesi çok düşüktür. Maske resmim beyaz arka plana ve siyah içeriğe sahip. Herhangi bir yardım takdir edilir.Retina Kalitesinde 2 UIImages'nin Maskelemesi

Çıktı: http://cl.ly/image/2A433N3t1h33 Kodu:

CGRect rect = CGRectMake(0.0f, 0.0f, 61.0f, 53.0f); 
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 2); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextFillRect(context, rect); 

UIImage *imageGradient = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle.png"]; 
UIImage *inputImage = imageGradient; 
CGImageRef maskRef = toggleImage.CGImage; 

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
            CGImageGetHeight(maskRef), 
            CGImageGetBitsPerComponent(maskRef), 
            CGImageGetBitsPerPixel(maskRef), 
            CGImageGetBytesPerRow(maskRef), 
            CGImageGetDataProvider(maskRef), NULL, false); 

CGImageRef masked = CGImageCreateWithMask(imageGradient.CGImage, mask); 
CGImageRelease(mask); 

UIImage *maskedImage = [UIImage imageWithCGImage:masked scale:inputImage.scale orientation:0]; 
CGImageRelease(masked); 

cevap

-1

tamamen emin değilim, ama bu çizgiyi değiştirmeyi deneyin: Buna

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle.png"]; 

:

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle"]; 

veya bu naif:

UIImage *toggleImage = [UIImage imageNamed:@"[email protected]"]; 

Sorun şu ki: Düşük kaliteli görüntüyü bu şekilde atayarak kullanmak için zorlarsınız. Uzatma atlanırken, Xcode otomatik olarak Retina görüntüsünü arar ve varsa bir tane atar.

Yine de yanlış olabilirim.

İlgili konular