UITextView-настройка шрифта не работает с iOS 6 на XCode 5
Я использую раскадровки для моего пользовательского интерфейса. Я ранее использовал XCode 4.6 и выпущен на iOS 6. С тех пор я обновился до iOS 7 с помощью XCode 5 и обновил раскадровку, чтобы хорошо работать с XCode 5. У меня есть один вопрос, хотя:
UITextView
не хочет отображать изменения шрифта в коде. Изменения цвета текста работают нормально. Любые другие изменения свойств в порядке. Шрифт, вовсе нет. Я использовал пользовательский шрифт, поэтому я проверил разные шрифты с разными размерами (т. е. systemFontOfSize:
), но это не работа. Текстовое представление только показывает шрифт, который установлен в раскадровке. Что я мог упустить здесь? Есть ли какие-либо ограничения автоматической компоновки, которые мешают такого рода вещи? У меня было несколько проблем с ограничениями во время миграции, но как я уже говорил, шрифт отлично работает в iOS 7.
Я думаю, что это что-то в раскадровке, что мне не хватает, как будто я создаю UIViewController
и добавить текст в код, он отлично работает.
Я бы поставил какой-то код, но я не уверен, что это бы помочь в этом случае.
11 ответов:
еще более странно, это происходит только на iPhone, а не iPad.
Если вы устанавливаете шрифт в коде и не хотите редактировать текстовое представление, сделайте это:
textView.editable = YES; textView.font = newFont; textView.editable = NO;
в моем случае речь идет о "выбираемом" свойстве UITextView.
поэтому я проверил "выбираемое" свойство UITextView в Редакторе раскадровки, чтобы установить его да
и позже в viewWillAppear установите для этого свойства значение нет.
textview.text = @"some text"; textview.selectable = NO;
проблема была вызвана
editable
свойство false в раскадровке. Я абсолютно не знаю, почему это заставило шрифт оставаться неизменным-и только на iOS 6.
для меня это работа, если вы установите текст вашего UITextView и после установки шрифта (то же самое для цвета) :
_myTextView.text = @"text"; [_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]]; _myTextView.textColor = [UIColor whiteColor];
Спасибо за все ответы, ребята. Проблема все еще присутствует на iOS9. То, что я узнал, это когда вы установили " взаимодействие с пользователем включено = false " в Построителе интерфейса вы можете оставить редактировать и выбор = true и пользователь не сможет изменить вид текста.
Итак, мое решение:
- Set Взаимодействие С Пользователем Включено = False В IB
- Set Редактируемый = True В IB
- Set Выбирается = True В IB
- настройка текстового представления в любом случае вы хотите.
код для swift:
textOutlet.editable = true textOutlet.textColor = UIColor.whiteColor() textOutlet.font = UIFont(name: "ArialMT", size: 20) textOutlet.editable = false
или если вы сначала измените текст, он волшебным образом будет решен
textOutlet.text = "omg lol wtf" textOutlet.textColor = UIColor.whiteColor() textOutlet.font = UIFont(name: "ArialMT", size: 20)
Я обнаружил, что размер шрифта игнорируется. Это было решено путем установки флажка под названием: выбирается (выбрав UITextView в раскадровке)
эта проблема возникает только при установке свойства Selectable в FALSE в Построителе интерфейса.
в случае, если вы должны иметь редактируемые и выбираемые свойства, установленные в FALSE, сделайте это из кода, а не в Построителе интерфейса.
подводя итоги сделать редактируемым и выбираемым свойства = да на Interface Builder и затем добавьте следующий код в случае, если вам нужна свойствами Ложь:
_textView.editable = NO; _textView.selectable = NO;
надеюсь, это поможет,
Swift 3 категория, которая работала для меня:
extension UITextView { func setFontAndUpdate(_ font: UIFont?) { self.font = font // Font doesn't update without text change let text = self.text self.text = nil self.text = text } }
в моем случае (разработка на Xcode 7.3, iOS 9),
причиной был порядок установки текста и шрифта-семейство/размер, а не варианты редактируемых или выбираемых многие ответы говорят там.(и я не получаю никакой раскадровки, xib на этом Textview.)
Если я ввожу как
[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]]; myTextView.attributedText = mAttStr;
тогда семейство и размер шрифта не изменяются, но еще когда я отменяю эти два шага, это работает. Установка текста должна быть впереди установки семейства/размера шрифта.