2013-09-25 3 views
15

Я только что перешел от xCode 4.x к xCode 5, а также совершил переход к iOS 7. В прошлом я разместил текст с конечными пробелами в UILabel, а с помощью выравнивания справа осталось немного места справа от текст. Поскольку я перешел на xCode 5, это поведение, похоже, изменилось. Когда UILabel выравнивает свой текст по правому краю, он, как представляется, игнорирует конечные пробелы - и выравнивает текст так, как если бы не было никаких конечных пробелов.Изменено поведение выравнивания UILabel в xCode 5/iOS 7?

Сказал ли кто-нибудь еще такое поведение? Есть ли способ добавить кросс-вставки в xCode для адаптации к этому новому поведению или это нужно сделать в коде?

+0

Я видел точно такое же поведение на устройствах iOS 7. В моем случае это было в старом приложении, которое я еще не перенес в Xcode 5, поэтому я все еще строю его с помощью Xcode 4.6.3. Это означает, что это также влияет на режим совместимости iOS 6. В этом приложении причина, по которой я добавил эти конечные пробелы, в первую очередь, заключалась в том, чтобы преодолеть еще одну ошибку UILabel: выровненный курсив курсивный текст обрезается по правому краю! Так что теперь я был вынужден к новому обходному пути в одном и том же фрагменте кода. На этот раз я закончил с грязным исправлением, изменив выравнивание текста до центра и динамически регулируя рамку. – Magnus

+0

Вы можете попробовать использовать дополнительное пространство (или alt-space), поскольку это дает другой пробел. – amergin

ответ

7

У меня такое же поведение. Я думаю, что проблема не в изменении xCode5, а при изменении в iOS7. Apple, похоже, теперь снимает все символы пробела из текстовых блоков, которые будут отображаться с использованием UILabel, которые используются для ввода строк либо в начале строки, либо в конце строки. Если в строке между двумя словами используются несколько символов пробела, эти символы не разделяются.

Мы используем UILabels для компоновки многострочных блоков текста, поставляемых с языка разметки. Некоторое текстовое содержимое должно быть выровнено по центру, но есть намеренно добавленные пробелы, чтобы подтолкнуть определенную строку текста влево или вправо. Это было признано и отлично работает под ios6, но ломается под ios7.

Почему Apple сделала это изменение, интересно. У кого-то еще есть эта проблема - какие-либо идеи для исправления для этого? Мы экспериментируем с пользовательским шрифтом, который имеет управляющий символ, который выглядит как пространство, но это не так.

+0

Спасибо. Есть моменты, когда я использую пробелы перед текстом на кнопке, чтобы добавить больше пространства между графикой кнопки и ее заголовком (который, я считаю, внутренне является «UILabel».Я использую выравнивание центра управления - похоже, работает по-прежнему. Я не проверял, изменилось ли поведение каждой формы выравнивания текста (влево, вправо, в центре). –

+0

У меня тоже есть эта проблема. Чрезвычайно расстраивает. Что мне даже незнакомо, так это то, что кажется, что затронуты только конечные пробелы - ведущие пробелы все еще отображаются. – DanM

+0

И, кроме того, такое же жуткое решение игнорировать конечные пробелы, как представляется, применяется к вычислению для adjustsFontSizeToFitWidth. – DanM

1

Посмотрите UILabel text margin

Большинство предложений делают это с кодами.

Я сделал мину с некоторой вещи, как это:

[myLabel setFrame:CGRectMake(75 ,20,size.width + 5,size.height+2)]; где size является CGSize моего текстового контента.

Вы также можете попробовать сделать это с помощью Auto Layout constraints.

+0

Спасибо. Конечно, есть много примеров для этого, используя код. Мне любопытно узнать, видел ли кто-либо подобное изменение в поведении UILabel. –

-1

Да, я видел это, и я не вижу простого общего исправления!

0

Я \ а:

label.text = [NSString stringWithFormat: @"%@ \a", originalString]; 

, что силы/фокусы пространство в показе.

+0

Приложение \ a не работает. iOS 10. –

Смежные вопросы