Подтвердить что ты не робот

Использование атрибута "атрибут" в интерфейсе Builder

Я пытаюсь отказаться от использования NSAttributedString в моем контроллере viewController, решив использовать параметр "Attributed" (как указано в "Plain" ) в поле "текст" инспектора атрибутов для UILabel.

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

enter image description here

Однако симулятор не отражает эти изменения, кажется, что во время выполнения шрифт, указанный для атрибутов, не используется (когда я меняю цвет, это работает так, как ожидалось). Я добавил шрифты к моему проекту и к моему plist безрезультатно:

enter image description here

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

Любая помощь или предложения очень ценится, спасибо.

Редактировать 03/07/15 Хорошо, я рад сообщить, что этот вопрос окончательно разрешен в Xcode 7 (все еще в бета-версии). Поэтому мы можем, наконец, поставить эту проблему на отдых. Спасибо всем, кто пытался понять это вместе со мной.

4b9b3361

Ответ 1

В Xcode 7.0 beta: я нашел, что это работает.

Раскадровка: http://imgur.com/Wb5H4ds

Вывод:

http://imgur.com/iOV8tJF

ИЛИ . Вы можете сделать это динамически.

-(void)attributedText{
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 100, 200, 44)];

NSString *newsTitle = @"Hello";
NSString *sportTtle = @"World";
NSString *title = [NSString stringWithFormat:@"%@ %@", newsTitle,sportTtle];
textView.text = title;

UIColor *color = [UIColor redColor];
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0];

NSDictionary *attrs = @{NSForegroundColorAttributeName : color,NSFontAttributeName:font};

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:textView.attributedText];
[attrStr addAttributes:attrs range:[textView.text rangeOfString:sportTtle]];
textView.attributedText = attrStr;
[self.view addSubview:textView];
}

Ответ 2

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

Ответ 3

Я получил эту работу в xcode 6.1. Я добавил UILabel со словами "Hello World" и изменил шрифт на Didod.

Вот xml-код моей раскадровки. Сопоставьте это против вашего и посмотрите, что-то не так.

<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" usesAttributedText="YES" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cd6-WA-P1d">
                            <rect key="frame" x="20" y="91" width="275" height="21"/>
                            <attributedString key="attributedText">
                                <fragment content="Hello World">
                                    <attributes>
                                        <color key="NSColor" cocoaTouchSystemColor="darkTextColor"/>
                                        <font key="NSFont" size="24" name="Didot"/>
                                        <paragraphStyle key="NSParagraphStyle" alignment="right" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
                                    </attributes>
                                </fragment>
                            </attributedString>
                            <nil key="highlightedColor"/>
                        </label>

Ответ 4

Я пытался сделать это с атрибутами меток в базовой ячейке таблицы стиля.
Как только вы выберете опцию "Attributed" в Interface Builder, ваши пользовательские шрифты не будут отображаться в подборщике шрифтов.

Вы можете заметить, что сборщик шрифтов - это стандартный набор шрифтов для системы.

Фокус в том, чтобы установить шрифты в /Library/Fonts. Теперь они появятся в диалоговом окне "Шрифты", когда вы измените метку на "Атрибут", а также в представлении раскадровки и просмотра.

Однако это все еще не работает во время выполнения. И если вы просмотрите раскадровку на другом компьютере без установленного шрифта, Interface Builder вернется к "близкому совпадению" (Lucida Grande в моем случае).

Есть одно преимущество для всего этого: если вы экспериментируете с причудливым форматированием, приятно видеть его в интерфейсе Builder. Затем вы можете посмотреть источник для раскадровки и скопировать атрибуты в исходный код.
Не забывайте reset ваш ярлык "Обычный" в Interface Builder, иначе проблемы с "близким совпадением" выполняются, как описано выше.

Ответ 5

Вы меняете текст этой метки в коде. Когда вы используете атрибут config в ярлыке Interface Builder, не изменяйте что-либо, относящееся к этой метке в коде.