2012-04-09 4 views
0

iPadシミュレータとデバイスでiOS 4.3を使用すると、アプリで画像の歪みが発生するのはなぜでしょうか。スクリーンショットを見てください。同じ画像がiOS 5.1シミュレータとデバイスに正常に表示されます。 2番目のスクリーンショットを見て...どうすればいいですか? JPEGを表示する前にコードを書くことは可能でしょうか? Distorted on iOS 4.3 Normal on iOS 5.1 残念ながら、私はそれを修復しなければなりません。私のアプリは何とかiOS 4.3で動作する必要があります。iOS 4.3で画像ネガティブディストーション

これは、それが親指の生成に使用される、方法である:私は私のイメージを準備するためにこれを使用しない場合

- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize 
{ 
UIImage *sourceImage = self; 
UIImage *newImage = nil;   
CGSize imageSize = sourceImage.size; 
CGFloat width = imageSize.width; 
CGFloat height = imageSize.height; 
CGFloat targetWidth = targetSize.width; 
CGFloat targetHeight = targetSize.height; 
CGFloat scaleFactor = 0.0; 
CGFloat scaledWidth = targetWidth; 
CGFloat scaledHeight = targetHeight; 
CGPoint thumbnailPoint = CGPointMake(0.0,0.0); 

if (CGSizeEqualToSize(imageSize, targetSize) == NO) 
{ 
    CGFloat widthFactor = targetWidth/width; 
    CGFloat heightFactor = targetHeight/height; 

    if (widthFactor > heightFactor) 
     scaleFactor = widthFactor; // scale to fit height 
    else 
     scaleFactor = heightFactor; // scale to fit width 
    scaledWidth = width * scaleFactor; 
    scaledHeight = height * scaleFactor; 

    // center the image 
    if (widthFactor > heightFactor) 
    { 
     thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 
    } 
    else 
     if (widthFactor < heightFactor) 
     { 
      thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; 
     } 
}  

UIGraphicsBeginImageContext(targetSize); // this will crop 

CGRect thumbnailRect = CGRectZero; 
thumbnailRect.origin = thumbnailPoint; 
thumbnailRect.size.width = scaledWidth; 
thumbnailRect.size.height = scaledHeight; 

[sourceImage drawInRect:thumbnailRect]; 

newImage = UIGraphicsGetImageFromCurrentImageContext(); 
if(newImage == nil) 
    NSLog(@"could not scale image"); 

//pop the context to get back to the default 
UIGraphicsEndImageContext(); 
return newImage; 
} 

はしかし、それはまだ否定的ですが、より遅く動作します、ので、画像は自動的にリサイズされます。これらの人は、ビューコントローラのちょうどカスタムボタンがあることを、

[current setImage:thumb forState:UIControlStateNormal]; 

はええ、私は言及を忘れてしまった:

-(void) setImage:(UIImage*)image forState:(UIControlState) state 
{ 
[self.buttonView setImage:image forState:state]; 
} 

この方法:

この方法は、画像を表示するために使用されます。

+0

おそらく.jpgを.pngに変換すると動作します。 – Garoal

+0

質問を編集する必要があります。イメージファイルの作成方法を教えて、イメージファイルをロードして画面に表示するコードを表示してください。 –

+0

完了、メソッドを追加しました。サイズを変更するために使用します。 – wzbozon

答えて

1

4.3で同じ問題が発生しました。画像はCMYKカラーで保存されていました。 RGBに切り替えて画像を再保存すると、問題はなくなりました。