UITextView-настройка шрифта не работает с iOS 6 на XCode 5


Я использую раскадровки для моего пользовательского интерфейса. Я ранее использовал XCode 4.6 и выпущен на iOS 6. С тех пор я обновился до iOS 7 с помощью XCode 5 и обновил раскадровку, чтобы хорошо работать с XCode 5. У меня есть один вопрос, хотя:

UITextView не хочет отображать изменения шрифта в коде. Изменения цвета текста работают нормально. Любые другие изменения свойств в порядке. Шрифт, вовсе нет. Я использовал пользовательский шрифт, поэтому я проверил разные шрифты с разными размерами (т. е. systemFontOfSize:), но это не работа. Текстовое представление только показывает шрифт, который установлен в раскадровке. Что я мог упустить здесь? Есть ли какие-либо ограничения автоматической компоновки, которые мешают такого рода вещи? У меня было несколько проблем с ограничениями во время миграции, но как я уже говорил, шрифт отлично работает в iOS 7.

Я думаю, что это что-то в раскадровке, что мне не хватает, как будто я создаю UIViewController и добавить текст в код, он отлично работает.

Я бы поставил какой-то код, но я не уверен, что это бы помочь в этом случае.

11 65

11 ответов:

еще более странно, это происходит только на iPhone, а не iPad.

Если вы устанавливаете шрифт в коде и не хотите редактировать текстовое представление, сделайте это:

textView.editable = YES;
textView.font = newFont;
textView.editable = NO;

в моем случае речь идет о "выбираемом" свойстве UITextView.

поэтому я проверил "выбираемое" свойство UITextView в Редакторе раскадровки, чтобы установить его да To set selectable

и позже в 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 и пользователь не сможет изменить вид текста.

Итак, мое решение:

  1. Set Взаимодействие С Пользователем Включено = False В IB
  2. Set Редактируемый = True В IB
  3. Set Выбирается = True В IB
  4. настройка текстового представления в любом случае вы хотите.

код для 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;

тогда семейство и размер шрифта не изменяются, но еще когда я отменяю эти два шага, это работает. Установка текста должна быть впереди установки семейства/размера шрифта.

как говорили другие:

textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false

п.з. нет необходимости сначала установить isEditable как true С true по умолчанию: немного короче, немного лучше