Изображение, созданное UIGraphicsImageRenderer, имеет другой размер

#core-image #cgimage

#core-image #cgimage

Вопрос:

Я создаю UIGraphicsImageRenderer с размером, но получаю CGImage с другим размером??

введите описание изображения здесь

пусть string = NSAttributedString (строка: «0», атрибуты: attributeDict) пусть size = string.size() print(размер) пусть traitCollection = UITraitCollection(displayScale: 1.0) пусть rendererFormat = UIGraphicsImageRendererFormat(для: 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!
  

Комментарии:

1. Я проголосовал против, потому что вам нужно включить свой код, а не скриншот. Пожалуйста, это помогает другим в решении вашей проблемы — поисковые системы, как внутренние, так и внешние, могут искать размещенный код, а не скриншоты. Добавьте его (и дайте мне знать), и я с радостью изменю его на повышающий!

Ответ №1:

С UIGraphicsImageRenderer ним связан масштаб, который определяет, как размер (в пунктах), с которым вы его создаете, преобразуется в реальные пиксели. По умолчанию этот масштаб такой же, как и у основного дисплея.

Вы можете изменить масштаб, инициализировав средство визуализации с другим форматом:

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

Комментарии:

1. Решена проблема.