默认情况下,UIGraphics
ImageRenderer将缩放设置为设备的屏幕比例,在iPhone 6s上它是2x和iPhone 6s Plus 3x,因此即使你给它一个尺寸为300的尺寸,它也会创建600或900,具体取决于正在使用的设备用过的.当你想确保它总是300时,你如何设置比例?
let outputBounds = CGRect(x: 0,y: 0,width: 300,height: 300) let renderer = UIGraphicsImageRenderer(bounds: outputBounds) let image = renderer.image { context in //... }
以前您可以通过最后一个参数设置比例:
UIGraphicsBeginImageContextWithOptions(bounds.size,false,1)
解决方法
在创建UIGraphicsImageRenderer时,应该使用UIGraphicsImageRendererFormat类.如果要编写精确像素而不是缩放点,请使用以下内容:
let format = UIGraphicsImageRendererFormat() format.scale = 1 let renderer = UIGraphicsImageRenderer(size: yourImageSize,format: format) let image = renderer.image { ctx in // etc }
我保持list of iOS 10 code examples并将基于此添加一个.