UITextField размыл текст

Если Вы хотите решение от другой перспективы..., если можно выполнить страницы через php и Очиститель HTML, это может автоотформатировать вывод и linkify любые URL.

10
задан 4 revs, 4 users 62% 12 April 2019 в 22:59
поделиться

7 ответов

Хорошо, я отвечаю на свой вопрос здесь.

Я нашел несколько ссылок на эту ошибку через Google, но все работали над ней, играя с размерами шрифтов. После долгих поисков я нашел этот поток , в котором говорится, что сглаживание применяется, когда кадр представления содержит дробные значения пикселей, например, если вы вычисляете его размер как долю от супер-представления.

Конечно, приведение значения CGRect для (int) для кадра представления работали отлично. Так, например, если вы хотите, чтобы ваше текстовое поле было центрировано по вертикали в супервизоре, вам следует использовать приведение типа (int) следующим образом:

textFieldWidth = 300;
textFieldHeight = 31;
offsetX = 0;
offsetY = (superview.bounds.size.height - textFieldHeight) / 2;

textField.frame = CGRectMake((int) offsetX,
                             (int) offsetY,
                             (int) textFieldWidth,
                             (int) textFieldHeight);

Существует также функция CGRectIntegral, которую вы можете использовать для преобразования CGRect в целые значения .

12
ответ дан 3 December 2019 в 13:56
поделиться

Используйте CGRectIntegral , чтобы убедиться, что рамки текстовых полей основаны на целочисленных координатах. Вы получите нечеткое сглаживание, когда все будет в дробных координатах.

26
ответ дан 3 December 2019 в 13:56
поделиться

Я хотел бы внести свой вклад, так как я только что обнаружил ответ самостоятельно после небольшого разочарования.

UITextField в InterfaceBuilder имеет принудительную высоту кадра 31 пиксель. Его нельзя перетащить, чтобы изменить размер, и его нельзя установить в свойствах фрейма в IB. Вам нужно перейти в viewDidLoad и настроить высоту кадра на 32 пикселя, и это должно решить проблему.

Надеюсь, будущие версии IB исправят это.

0
ответ дан 3 December 2019 в 13:56
поделиться

В дополнение к используя нефракционное позиционирование, следует обязательно использовать нецентрированное вертикальное выравнивание для UITextField. Похоже, центрированное вертикальное выравнивание в сочетании с нестандартным размером шрифта также приводит к размытому тексту.

1
ответ дан 3 December 2019 в 13:56
поделиться

я пробовал использовать CGRectIntegral и прочее. В моем случае изменение минимального размера шрифта и размера шрифта в IB сделало это.

0
ответ дан 3 December 2019 в 13:56
поделиться

Я сталкивался с этой проблемой раньше. Решение, приведенное ниже, отлично работает для любого текста или любого размера кадра, поскольку он использует функцию округления, чтобы избавиться от дробных значений пикселей. Вставьте следующий код после создания экземпляра рассматриваемого поля uitext.

CGRect temp = textField.frame;
temp.origin.x = round(temp.origin.x);
temp.origin.y = round(temp.origin.y);
textField.frame = temp;
0
ответ дан 3 December 2019 в 13:56
поделиться

Простая установка высоты кадра UITextField на четное значение исправила это для меня.

0
ответ дан 3 December 2019 в 13:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: