【iOS】Swiftでtransformから角度、ラジアン、ディグリー、スケールを求める


メモ

Swift 4 でtransformから角度、ラジアン、ディグリー、スケールを求める 忘れがちなので・・・。


let transform = view.transform
let radians = atan2(transform.b, transform.a)
let degrees = radians * 180 / .pi
let scale = sqrt(abs(transform.a * transform.d - transform.b * transform.c))


import CoreGraphics

extension CGAffineTransform {
    var angle: CGFloat {
        return atan2(b, a)
    }
    
    var radians: CGFloat {
        return angle
    }
    
    var degrees: CGFloat {
        return angle * 180.0 / CGFloat.pi
    }
    
    var scale: CGPoint {
        return CGPoint(x: sqrt(a * a + c * c), y: sqrt(b * b + d * d))
    }
}

// 例として、適当な CGAffineTransform を作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi/4).scaledBy(x: 2.0, y: 1.5)

let angleInRadians = transform.radians
let angleInDegrees = transform.degrees
let scale = transform.scale

print("Angle in radians: \(angleInRadians)")
print("Angle in degrees: \(angleInDegrees)")
print("Scale: \(scale)")

コメント

このブログの人気の投稿

【iOS】UIStackViewでマージンとか設定したい。

【iOS】 ヒラギノフォントが切れる件 ( UILabel )