Zum Drehen eines UIImagage habe ich eine Erweiterung verwendet, die aus dem Internet heruntergeladen wird. Dort funktioniert das Drehen, aber es gibt einige verdrahtete Verhaltensweisen.Problem beim Drehen UIImage - IOS/Swift
Dies ist die Erweiterung Code
import UIKit
extension UIImage {
public func imageRotatedByDegrees(degrees: CGFloat, flip: Bool) -> UIImage {
let radiansToDegrees: (CGFloat) -> CGFloat = {
return $0 * (180.0/CGFloat(M_PI));
}
let degreesToRadians: (CGFloat) -> CGFloat = {
return $0/180.0 * CGFloat(M_PI);
}
// calculate the size of the rotated view's containing box for our drawing space
let rotatedViewBox = UIView(frame: CGRect(origin: CGPointZero, size: size));
let t = CGAffineTransformMakeRotation(degreesToRadians(degrees));
rotatedViewBox.transform = t;
let rotatedSize = rotatedViewBox.frame.size
// Create the bitmap context
UIGraphicsBeginImageContext(rotatedSize);
let bitmap = UIGraphicsGetCurrentContext();
// Move the origin to the middle of the image so we will rotate and scale around the center.
CGContextTranslateCTM(bitmap, rotatedSize.width/2.0, rotatedSize.height/2.0);
// Rotate the image context
CGContextRotateCTM(bitmap, degreesToRadians(degrees));
// Now, draw the rotated/scaled image into the context
var yFlip: CGFloat;
if(flip){
yFlip = CGFloat(-1.0);
} else {
yFlip = CGFloat(1.0);
}
CGContextScaleCTM(bitmap, yFlip, -1.0);
CGContextDrawImage(bitmap, CGRectMake(-size.width/2, -size.height/2, size.width, size.height), CGImage);
let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
}
Dies ist, wie ich Erweiterungsmethode und zurückgegeben Bild, um die Fotoansicht aufrufen. Bild Ansicht der ‚contentMode‘ Eigenschaft wird auf ‚Scale Fill‘
currentPagePreviewImageVew.image = currentPagePreviewImageVew.image!.imageRotatedByDegrees(90, flip: false);
Dies ist, wie es aussieht, bevor drehen Taste
einmal Dies ist nach dem Drücken dreht Taste drücken. (Siehe Bild nicht gedreht wird, aber es ist Größe geändert wurde)
Dies ist, wenn das Bild r otation beträgt 90 Grad. (hier nach dem Bild dreht aber wie man die anderen Ansichten zu sehen bekommen gedehnt, wenn Bild in 0 und 180 Grad, wie in dem obigen Bildschirm (2))
Kann jemand Bitte sagen Sie mir, was mit meinem Code nicht stimmt und wenn es eine bessere Lösung gibt, lassen Sie es mich bitte wissen. Jede Hilfe würde sehr geschätzt werden.
Bearbeitet: Das Ausdehnen der Ansichten war wegen eines Einschränkungsproblems. Ich habe es gelöst, indem ich eine Höhenbeschränkung auf die Werkzeugleiste über der Bildansicht gesetzt habe. Aber ich konnte immer noch keine Antwort für dieses erste Mal finden.
Ich hatte ein Problem, weil die Änderung der affinen Transformationsmatrix einen Einfluss auf die automatischen Layout-Einschränkungen hatte. Dies könnte ein ähnliches Problem sein. – Daniel
@simpleBob Was haben Sie getan, um Ihre Arbeit zu erledigen? – GMHSJ
Ich entfernte und setze die Einschränkungen wieder auf das Objekt – Daniel