Die bloße Verwendung imageWithCGImage
reicht nicht aus. Es wird skaliert, aber das Ergebnis ist verschwommen und suboptimal, unabhängig davon, ob es vergrößert oder verkleinert wird.
Wenn Sie das Aliasing richtig machen und die "Zacken" loswerden möchten, benötigen Sie Folgendes: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right- Weg / .
Mein Arbeitstestcode sieht ungefähr so aus. Dies ist Trevors Lösung mit einer kleinen Anpassung, um mit meinen transparenten PNGs zu arbeiten:
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGImageRef imageRef = image.CGImage;
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);
CGContextConcatCTM(context, flipVertical);
CGContextDrawImage(context, newRect, imageRef);
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGImageRelease(newImageRef);
UIGraphicsEndImageContext();
return newImage;
}