Bagaimana cara memiringkan NSView berdasarkan pusat?

Bagaimana cara memiringkan NSView berdasarkan pusatnya?

let view = NSView(frame: frame)
self.view.addSubView(view)
view.frameCenterRotation = -3.0

Kemiringan ini didasarkan pada asal usulnya, bukan berdasarkan pusatnya.

Dapatkah seseorang membantu saya dalam hal ini?


person Sheik_101    schedule 03.11.2016    source sumber
comment
Saya setuju. .frameCenterRotation ini benar-benar menyesatkan.   -  person Sentry.co    schedule 27.04.2017


Jawaban (1)


Pendekatan CALAyer:

var transform = CGAffineTransform.identity
let radians:CGFloat = rotation / 180.0 * CGFloat.pi
transform = CGTransform.rotateAroundPoint(transform, radians,pivot)
view.layer?.setAffineTransform(transform)

Catatan Tambahan 1: Anda dapat melakukan ini dengan view.setBoundsOrigin(pivot) + view.rotate(byDegrees: rotasi) (Tetapi Anda harus memperhitungkan bahwa Jika Anda membalik sistem koordinat, maka Anda harus melakukannya pertimbangkan itu juga)

Catatan Tambahan 2: Melakukannya dengan CALayer juga memungkinkan kemungkinan untuk animasi di masa mendatang

person Sentry.co    schedule 27.04.2017