UIGraphicsImageRenderer
是在iOS 10中新引入的。我想知道是否有任何可能性將它旋轉UIImage
(任何自定義角度)。我知道有classic way與CGContextRotateCTM
。使用UIGraphicsImageRenderer旋轉圖像?
1
A
回答
3
您可以設置UIGraphicsImageRenderer創建一個圖像,並與調用UIGraphicsGetCurrentContext()和旋轉方面
let renderer = UIGraphicsImageRenderer(size:sizeOfImage)
let image = renderer.image(actions: { _ in
let context = UIGraphicsGetCurrentContext()
context?.translateBy(x: orgin.x, y: orgin.y)
context?.rotate(by: angle)
context?.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: -orgin.x,y: -orgin.y), size: size))
}
return image
1
請仔細閱讀文檔,也由於缺乏對這個問題的回覆,我認爲這是不可能的新的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
對應於需要繪製旋轉的圖像,而不改變其整體尺寸的矩形區域。圖像不是旋轉並繪製在中心。有關更多信息,請參閱此post。
相關問題
- 1. 使用javascript旋轉圖像
- 2. 使用rotateY旋轉圖像
- 3. 使用pixelbender旋轉圖像
- 4. 使用GDI +旋轉圖像+
- 5. 使用Javascript旋轉圖像
- 6. 使用旋轉圖像
- 7. 使用Javascript旋轉圖像
- 8. 使用openCV旋轉圖像
- 9. 使用pygame旋轉圖像
- 10. 使用UISlider旋轉圖像?
- 11. 使用CGAffineTransformMakeRotation旋轉圖像
- 12. 使用CMDeviceMotion旋轉圖像
- 13. 使用css旋轉圖像
- 14. 使用圖像中心作爲旋轉軸旋轉圖像
- 15. 旋轉圖像
- 16. - 旋轉圖像
- 17. 旋轉圖像
- 18. 旋轉圖像
- 19. 旋轉圖像
- 20. 旋轉圖像
- 21. 旋轉圖像使UI慢
- 22. 用ffmpeg旋轉圖像
- 23. 用刷卡旋轉圖像
- 24. 用鼠標旋轉圖像
- 25. 用css旋轉圖像
- 26. 用動畫旋轉圖像?
- 27. 用AffineTransform旋轉圖像
- 28. 如何使用jQuery旋轉插件旋轉圖像?
- 29. 不使用CSS3左下角左右旋轉的圖像旋轉
- 30. 使用AngularJS自我旋轉圖像