2014-12-10 5 views
3

Ive возился с этим без надлежащих результатов. Мой код выглядит следующим образом:Проблемы с строкой и атрибутами

NSMutableAttributedString *nameString = [[NSMutableAttributedString alloc]initWithString:((User *)appDelegate.users[self.currentUserIndex]).name]; 
[nameString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] range:NSMakeRange(0, nameString.length)]; 

NSString *adviceString = [[NSString alloc] initWithFormat:@"%@, remember be extra aware of the \n cat today. The dog index is 4, dogcatcher \n suggests you should at minimum wear \n a dog and apply cat...", [nameString string]]; 

Таким образом, он не выделяет имя пользователя по своему желанию. Я попытался использовать NSAttributedString для adviceString, но тогда я не могу использовать метод initWithFormat: и перечислить переменные после строки, и я не вижу эквивалента NSAttributedString. Я хотел вам NSAttributedString вместо NSMutableAttributedString, но, похоже, он не распознает метод addAttribute:value:fontWithName:range. Кто-нибудь может мне помочь? Любая помощь очень ценится.

+0

Почему бы не вставить приписываемое строку в файл ' adviceString', который также следует отнести. В противном случае он не будет содержать атрибуты. Что именно вы пытаетесь достичь здесь? – n00bProgrammer

+0

Я хочу иметь 4 переменных, которые я могу сделать полужирным шрифтом, и вставить их в свою стандартную строку – DevilInDisguise

+0

Для этого вы ** не можете ** использовать 'NSString'. 'NSAttributedString' - это путь. – n00bProgrammer

ответ

0

Это точно, вам нужно использовать NSAttributedString также для adviceString, чтобы получить атрибуцию.

код выглядит следующим образом, если вам нужно использовать stringWithFormat:

NSString *fullName = @"Anoop Kumar Vaidya"; 
NSMutableAttributedString *attributedName = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Hello %@", fullName] 
             attributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]}]; 

В атрибутах можно добавить несколько более желательные/необходимые атрибуты.

EDIT 2:

Вы можете, как использовать некоторые методы, как:

-(NSMutableAttributedString *)normalString:(NSString *)string{ 
    return [[NSMutableAttributedString alloc] initWithString:string 
                attributes:@{}]; 
} 

-(NSMutableAttributedString *)boldString:(NSString *)string{ 
    return [[NSMutableAttributedString alloc] initWithString:string 
                attributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:[UIFont systemFontSize]] 
                   }]; 
} 

И затем использовать их в соответствии с вашими требованиями:

NSMutableAttributedString *attributedName = [self boldString:fullName]; 
[attributedName appendAttributedString:[self normalString:@" is creating one"]]; 
[attributedName appendAttributedString:[self boldString:@" bold"]]; 
[attributedName appendAttributedString:[self normalString:@" string."]]; 
+0

не могли бы вы исправить свой ответ, чтобы он содержал, скажем 3, переменные, которые могут иметь жирный размер и затем добавлять его к простой строке. Ваш пример помог мне, но он выделяет целую цепочку, которая не является преднамеренной. – DevilInDisguise

+0

@DevilInDisguise: см. Обновленный ответ –

+1

, кажется, имеет смысл и дал мне некоторые идеи (хотя это кажется сложным способом сделать простую вещь), спасибо вы! Я думаю, вы должны заменить «string» в своем последнем разделе кода, возможно, anNSAttributedString только для оформления и недоразумений. – DevilInDisguise

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