2010-12-13 15 views
1

ich die Codes unten verwendet, um eine UIImagedrehen UIImage und nichts zeigt

double angle = -90; 
NSData *imageData = [NSData dataWithContentsOfFile:sss]; 
UIImage *image =[UIImage imageWithData:imageData]; 
CGSize s = {image.size.width, image.size.height}; 
UIGraphicsBeginImageContext(s); 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(ctx, 0,image.size.height); 
CGContextScaleCTM(ctx, 1.0, -1.0); 
CGContextRotateCTM(ctx, 2*M_PI*angle/360); 
CGContextDrawImage(ctx,CGRectMake(0,0,image.size.width, image.size.height),image.CGImage); 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[myUIImageView setImage:newImage]; 

aber nichts zeigt auf myUIImageView zu drehen.

Wenn etwas falsch ist?

Willkommen jeden Kommentar

Dank

InterDev

Antwort

2

Wenn Sie Drehen des Bildes um 90 Grad zu gehen, sollten Sie die Breite und Höhe wechseln, wenn Sie das Bild Kontext erstellen:

CGSize s = {image.size.height, image.size.width}; 

Auf diese Weise ist genug Platz, um das vollständig transformierte Bild zu zeichnen. Wenn versucht wird, ein Bild in ein Rechteck zu zeichnen, das die Grenzen eines Grafikkontexts überschreitet, wird nichts gezeichnet.

P.S. Ich empfehle, eine CGBitmapContext anstelle von UIGraphicsBeginImageContext() zu verwenden, da die erste threadsicher ist, was bedeutet, dass Sie Ihre Bildmanipulationen auf einem Hintergrundthread vornehmen können, wenn Sie dies wünschen.

+0

Ja, ich möchte das gedrehte Bild zu einem Rechteck zeichnen, wie alle gedrehten Bilder angezeigt werden? – arachide

+0

Ich habe die Lösung! Vielen Dank – arachide