代码之家  ›  专栏  ›  技术社区  ›  David Kramf

uigraphicsimagerenderer创建的图像大小不同

  •  0
  • David Kramf  · 技术社区  · 6 年前

    我创建了一个大小不同的uigraphicsimagerenderer,但是得到的cgimage大小不同??

    enter image description here

    let string=nsattributedstring( 字符串:“0”, 属性:attributedit) let size=string.size() 打印(大小) 设traitCollection=uiTraitCollection(显示比例:1.0) let renderFormat=uiGraphicsImagerenderFormat(用于:traitCollection)

        let renderer = UIGraphicsImageRenderer(bounds: CGRect(origin: .zero, size: size), format: rendererFormat)
        let im = renderer.image{ (context) in
            UIColor.black.setStroke()
            let element = CGFloat(grayShade)/CGFloat(255)
            let color = UIColor(red: element, green: element, blue: element, alpha: 1)
            print(color)
            color.setFill()
            context.stroke(renderer.format.bounds)
            context.fill(renderer.format.bounds)
            let rect = context.format.bounds
            print(rect)
            string.draw(in: rect)
        }
    
        let cg = im.cgImage
        return cg!
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Frank Rupprecht    6 年前

    这个 UIGraphicsImageRenderer 具有与之关联的比例,该比例确定使用它创建的大小(以点为单位)如何转换为实际像素。默认情况下,此比例与主显示的比例相同。

    可以通过使用不同格式初始化渲染器来更改比例:

    let traitCollection = UITraitCollection(displayScale: 1.0)
    let rendererFormat = UIGraphicsImageRendererFormat(for: traitCollection)
    let renderer = UIGraphicsImageRenderer(bounds: CGRect(origin: .zero, size: size), format: rendererFormat)