UIImageを回転させるために、私はインターネットからダウンロードされた拡張子を使用しました。そこでは、回転が働いていますが、いくつかの有線の振る舞いがあります。UIImageを回転させる問題 - IOS/Swift
これは、拡張コード
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;
}
}
ですこれは、私がイメージビューにイメージ返さ拡張メソッドとセット呼び出す方法です。画像ビューの「contentMode」プロパティは、これは、それが回転ボタンを押す前にどのように見えるかです
currentPagePreviewImageVew.image = currentPagePreviewImageVew.image!.imageRotatedByDegrees(90, flip: false);
「記入するスケール」に設定されている
これは、一度回転ボタンを押した後で。(画像を参照してください。とき画像Rこれは回転しないが、それのサイズが変更されている)
otationは90度である。(画像が回転しているが、あなたが見ることができるように、他のビューが伸びます。ここ後の画像は、上記の画面のように0度と180度である(2))
は、いくつかの1缶私のコードに何が間違っているのか教えてください。もっと良い解決策があれば教えてください。どんな助けも高く評価されます。
編集:ビューのストレッチは制約の問題が原因でした。私はイメージビューの上のツールバーに高さの制約を置くことでそれを解決しました。しかし、初めてのことはまだ答えが見つかりませんでした。
アファイン変換行列を変更すると自動レイアウト制約に影響があったため、問題が発生しました。これは同様の問題です。 – Daniel
@simpleBob作業を完了するために何をしましたか? – GMHSJ
オブジェクトの制約を取り除いて再度設定しました – Daniel