CGAffineTransform 縮放 位移 旋轉和鏡像翻轉
Published in
5 min readApr 23, 2020
目的:練習圖片的縮放、位移、旋轉和鏡像翻轉效果。
在 Playground 利用 CGAffineTransform 嘗試各種圖片效果吧!
運用:
- 事前準備
首先先在左側 Resources 內新增一張要使用圖片。
程式部分記得先 import UIKit,接下來才能使用裡面的 function 。
import UIKit
建立一個 view 與 一個的代表一度的常數以待接下來的運用。
let view = UIView(frame: CGRect(x: 0, y: 0, width: 1000, height: 1000))let oneDegrade = CGFloat.pi / 180
將圖片當作 view 的 subview
let imageView = UIImageView(image: UIImage(named: “cute”))view.addSubview(imageView)
2. Scale 縮放
方法 1 (放大1.5)
imageView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)view
方法 2 (原圖放大2倍)
imageView.transform = CGAffineTransform.identity.scaledBy(x: 2, y: 2)view
3. 鏡像翻轉
新增一個鏡像圖案以便跟原圖比較
let mirrorImageView = UIImageView(image: UIImage(named: “cute”))
鏡像翻轉(左右 scaleX 設為 -1, 上下 scaleY 設為 -1)
鏡像 X 位置設為原圖的 maxX + 10
mirrorImageView.frame.origin.x = imageView.frame.maxX + 10mirrorImageView.transform = CGAffineTransform(scaleX: -1, y: -1)view.addSubview(mirrorImageView)
4. 位移
位移至(100 , 300)
imageView.transform = CGAffineTransform(translationX: 100, y: 300)view
5. 旋轉
方法 1 (旋轉 45 度)
imageView.transform = CGAffineTransform(rotationAngle: oneDegrade * 45)view
方法 2 (沒套用任何效果的 CGAffineTransform 旋轉 135 度)
imageView.transform = CGAffineTransform.identity.rotated(by: oneDegrade * 135)view
6. 結合縮放、位移和旋轉
順序重點:先 translatedBy 再 scaledBy 通常會是我們想要的效果
imageView.transform = CGAffineTransform.identity.translatedBy(x: 100, y: 400).scaledBy(x: 0.5, y: 0.5).rotated(by: oneDegrade * 180)view
7. 顯示沒有任何效果的 CGAffineTransform
imageView.transform = CGAffineTransform.identityview