2013-01-02 10 views
5

Po wypróbowaniu odpowiedzi wysłanej here obraz, który zostanie zwrócony, jest bardzo niskiej jakości na wyświetlaczu siatkówki. Mój obraz maski ma białe tło i czarną zawartość. Każda pomoc jest doceniana.Maskowanie 2 UIImages w Retina Quality

wyjściowa: http://cl.ly/image/2A433N3t1h33 Kod:

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); 

Odpowiedz

-1

nie jestem całkowicie pewien, ale spróbuj zmienić ten wiersz:

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

do tego:

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

lub naiwny to:

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

Chodzi o to: Myślę, że zmusisz go do użycia niskiej jakości obrazu poprzez przypisanie go w ten sposób. Podczas pomijania rozszerzenia Xcode automatycznie szuka obrazu Retina i przypisuje go, jeśli taki istnieje.

Może się mylę, przepraszam jeśli tak.