Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีหมุนรูปภาพใน UIImageView ด้วยมุมที่กำหนดบน iOS

หมุนรูปภาพใน UIImageView ด้วย CGAffineTransform

ใช้ property transform ของ UIView ร่วมกับ CGAffineTransform หมุนรูปได้ง่ายๆ

ขั้นตอนที่ 1: สร้างโปรเจกต์

Xcode → Single View App → ชื่อ "RotateImage"

ขั้นตอนที่ 2: ออกแบบ UI ใน Storyboard

  • UIImageView (วางรูปตัวอย่าง)
  • UIButton 2 ตัว: "Rotate 90°" และ "Rotate 45°"

ขั้นตอนที่ 3: สร้าง IBOutlet และ IBAction

@IBOutlet var imageView: UIImageView!

@IBAction func rotate90button(_ sender: Any) {
    imageView.transform = imageView.transform.rotated(by: CGFloat.pi / 2) // 90°
}

@IBAction func rotate45button(_ sender: Any) {
    imageView.transform = imageView.transform.rotated(by: CGFloat.pi / 4) // 45°
}

คำอธิบาย

  • CGFloat.pi = 180 องศา (π เรเดียน)
  • pi / 2 = 90°, pi / 4 = 45°, pi = 180°
  • rotated(by:) สร้าง Transform ใหม่จาก Transform ปัจจุบัน (สะสมมุม)
  • ใช้ imageView.transform = .identity เพื่อ Reset กลับสถานะเดิม

ขั้นตอนที่ 4: รันทดสอบ

กดปุ่มทีละครั้ง จะเห็นรูปหมุนสะสมมุมไปเรื่อยๆ

ขยายความสามารถ

หมุนแบบ Absolute (ไม่สะสม)

// หมุนไปที่มุมที่กำหนดโดยตรง
imageView.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)

Animation หมุน

UIView.animate(withDuration: 0.5) {
    self.imageView.transform = self.imageView.transform.rotated(by: .pi / 2)
}

หมุนรอบจุดกึ่งกลาง (Default) vs จุดอื่น

Default จะหมุนรอบ Center ของ View หากต้องการหมุนรอบจุดอื่น ต้องปรับ anchorPoint ของ Layer

สูตรแปลงองศาเป็นเรเดียน

func degreesToRadians(_ degrees: CGFloat) -> CGFloat {
    return degrees * .pi / 180
}

// ใช้งาน:
imageView.transform = imageView.transform.rotated(by: degreesToRadians(30))