iPhone X: UIGraphicsGetImageFromCurrentImageContext возвращает изображение с потенциальной потерей качества (битые пиксели)

Примечание. Эта ошибка повторяется только с iPhoneX и только с белым цветом текста.

У меня есть UITextView с возможностью изменения размера кадра. Когда я пытаюсь получить изображение с помощью UIGraphicsGetImageFromCurrentImageContext, его возвращаемое изображение с «битыми пикселями» близко к краям текста.

UIGraphicsBeginImageContextWithOptions(frame.size, opaque, 0.0)

изображение с масштабом = 0,0 (по умолчанию 3,0 для iPhoneX)

Но когда я меняю значение масштаба с 0,0 на 2,0, «битые пиксели» исчезают, и я без проблем получаю нормальное изображение:

UIGraphicsBeginImageContextWithOptions(frame.size, opaque, 2.0)

изображение с масштабом = 2,0

Эта ошибка не возникает с другими iPhone или цветами текста.

Я пытаюсь изменить значение textView.textInputView.contentScaleFactor, но это не помогло.

Спасибо.


person S. Nick    schedule 22.11.2017    source источник


Ответы (1)


Во что вы переводите контекст?

Обратите внимание, что вы обычно хотите, чтобы ширина и высота изображения/текстуры были степенями 2. Это может быть запутано из-за contentScaleFactor iPhone X, который равен 3.

(Большинство устройств iOS в наши дни имеют версию 2, что сохраняет степень двойки. Но когда вы вызываете UIGraphicsBeginImageContextWithOptions с 0.0, под капотом это становится 3.0 на iPhone X.)

person eddybox    schedule 14.12.2017