2012-05-02 10 views
1

私は、異なるオブジェクトを表示するためにパンとズームが可能な大きな表示領域を持っています。私が取り組んでいる問題は、ズームアウトするとPNG画像のUIButtonの品質がいくらか低下することです(ただし、100%にズームすると正常に戻ります)。あたかも画像がぼやけてしまったように見えます。これは私が生きなければならないものか、このざらついたエッジ効果を取り除く方法ですか?ちなみに、画像のアスペクト比は常に1:1です。UIScrollviewは、ズームアウト時にUIButtonの画質を変更します。

答えて

0

私のscrollViewDidEndZoomingメソッドでは、答えがhereであることを確認して解決できました。ここに私のコードは次のとおりです。

リサイズ機能

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

    // Set the quality level to use when rescaling 
    CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height); 

    CGContextConcatCTM(context, flipVertical); 
    // Draw into the context; this scales the image 
    CGContextDrawImage(context, newRect, imageRef); 

    // Get the resized image from the context and a UIImage 
    CGImageRef newImageRef = CGBitmapContextCreateImage(context); 
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 

    CGImageRelease(newImageRef); 
    UIGraphicsEndImageContext();  

    return newImage; 
} 

ScrollView方法 (ウィジェットは、その画像のフル解像度を保存するボタンと「widgetImage」が含まれてのUIViewControllerのサブクラスでありますボタンが表示されます)

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    for(Widget *theWidget in widgets){ 
     UIImage *newScaledImage = [self resizeImage:theWidget.widgetImage newSize:CGSizeMake(theWidget.view.frame.size.width * scale, theWidget.view.frame.size.height * scale)]; 
     [theWidget.widgetButton setImage:newScaledImage forState:UIControlStateNormal]; 
     // theWidget.widgetButton.currentImage = newScaledImage; 
    } 
} 
関連する問題