Ich denke, warum ich Bildverzerrung auf meiner App, wenn ich iOS 4.3 auf iPad Simulator und Gerät verwenden. Schau dir den Screenshot an. Das gleiche Bild wird normalerweise auf iOS 5.1 Simulator und Gerät angezeigt. Schau dir den zweiten Screenshot an ... Wie soll ich das schaffen? Kann es sein, dass es möglich ist, etwas Code zu schreiben, bevor das JPEG angezeigt wird? Leider muss ich es reparieren, coz meine App muss irgendwie auf iOS 4.3 arbeiten.Image negative Verzerrung auf iOS 4.3
Dies ist ein Verfahren, das für die Erzeugung von Daumen verwendet wird:
- (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;
}
Allerdings, wenn ich mein Bild nicht diese verwenden, um vorzubereiten, ist es immer noch negativ ist, arbeitet aber langsamer, weil Bilder werden automatisch in der Größe angepasst.
Diese Methode wird zur Anzeige Bild verwendet:
-(void) setImage:(UIImage*)image forState:(UIControlState) state
{
[self.buttonView setImage:image forState:state];
}
auf diese Weise:
[current setImage:thumb forState:UIControlStateNormal];
Ja, ich vergaß zu erwähnen, dass diese Jungs einfach-Buttons eines View-Controller sind.
Wahrscheinlich, wenn Sie Ihre .jpg zu .png konvertieren, funktioniert es. – Garoal
Sie müssen Ihre Frage bearbeiten. Sagen Sie uns, wie Sie die Bilddateien erstellen, und zeigen Sie uns den Code, der sie lädt und auf dem Bildschirm anzeigt. –
Fertig, ich habe eine Methode hinzugefügt, die ich verwende, um die Größe zu ändern. – wzbozon