3

UIGraphicsImageRendererUIImageが iOS 10 で新しく導入されました。これを使用して (任意のカスタム角度で)を回転させる可能性があるかどうか疑問に思っていました。には古典的な方法があることを知っていCGContextRotateCTMます。

4

3 に答える 3

0

ドキュメントを調べても、この質問に対する回答がないため、新しい では不可能だと思いUIGraphicsImageRendererます。これが私が一日の終わりにそれを解決した方法です:

func changeImageRotation(forImage image:UIImage, rotation alpha:CGFloat) -> UIImage{

    var newSize:CGSize{
        let a = image.size.width
        let b = image.size.height

        let width = abs(cos(alpha)) * a + abs(sin(alpha)) * b
        let height = abs(cos(alpha)) * b + abs(sin(alpha)) * a

        return CGSize(width: width, height: height)
    }

    let size = newSize
    let orgin = CGPoint(x: size.width/2, y: size.height/2)

    UIGraphicsBeginImageContext(size)
    let context = UIGraphicsGetCurrentContext()

    context?.translateBy(x: orgin.x, y: orgin.y)
    context?.rotate(by: alpha)
    context?.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: -orgin.x,y: -orgin.y), size: size))

    let newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage!
}

New Size全体のサイズを変更せずに回転した画像を描画するために必要な四角形の領域に対応します。画像は回転され、中央に描画されます。詳細については、この投稿を参照してください。

于 2016-08-23T21:54:46.220 に答える