Символ SF выглядит искаженным
При использовании новых символов SF на UIButton символы кажутся искаженными на моем iPhone 8, а на симуляторе iPhone 11 все в порядке. На iPhone 8 символы кажутся сдавленными по горизонтали, что делает его слишком высоким. Я сделал гифку, чтобы проиллюстрировать проблему. На гифке показаны переходы двух скриншотов. Один из 8 и один из 11:
Кто-нибудь еще сталкивался с этой проблемой? Что здесь происходит?
Редактировать:
Атрибуты IB. Кнопка ограничена всем для краев содержащего представления.
Редактировать № 2: Размер символа установлен правильно при указании шрифта для символа и масштаба "Большой". Пробовал SystemFont "Заголовок".
2 ответа
Установка режима содержимого в представлении изображения кнопки в коде, похоже, работает как обходной путь.
button.imageView?.contentMode = .scaleAspectFit
Информационный кружок на скриншоте ниже - это UIButton, использующий SF-символ info.circle.fill.
Я не пробовал все символы, но похоже, что по крайней мере все символы, основанные на форме круга, имеют эту проблему.
Изменить: см . Ответ fahlout для обходного пути с использованием contentMode представления изображения.
Как вы заметили, при обычном / среднем размере с размером шрифта 17pt некоторые символы отображаются не так, как ожидалось, а некоторые формы искажаются.
Некоторые наблюдения:
- Это похоже только на то, как UIButton отображает изображение, на UIImageView это не влияет.
- При увеличении размера шрифта / использовании большего или более жирного варианта символа проблема будет менее заметна или полностью исчезнет. Если бы мне пришлось угадывать, я бы сказал, что это потому, что неудачный рендеринг вызван некоторой ошибкой округления чисел с плавающей запятой, и ошибка оказывает меньшее влияние, когда масштаб больше.
Вот визуальное сравнение circle
символ (зеленый) в разных масштабах и размерах и контрольный круг, наложенный в Photoshop (красный):
- Слева: Шрифт = Заголовок; Масштаб = не указан; Вес = не указан
- Центр: Шрифт = Тело; Масштаб = не указан; Вес = не указан
- Справа: шрифт = заголовок; Масштаб = Большой вес = Не указан
Мы можем видеть здесь, что во всех случаях символ круга не является идеальным кругом, и что ему не хватает одного или двух пикселей по горизонтали (в зависимости от размера шрифта), чтобы быть идеально круглым.
Я сделал проект, показывающий проблему: https://github.com/guillaumealgis/UIButton-SFSymbol-Squished
К сожалению, у меня нет хорошего решения или обходного пути для этой проблемы, поскольку это, похоже, внутренняя ошибка UIKit.
Изменить: см . Ответ fahlout для обходного пути с использованием contentMode представления изображения.
Вы также должны отправить отзыв в Apple, чтобы повысить шансы исправления этой ошибки! (мой - FB7461981, ребята из Apple)