Intereting Posts
Проблема NSTimer с повторным использованием Ротация куба SceneKit с несколькими UIPanGestureRecognizers Как потоковое видео с iPhone на медиа-сервер modalViewController, представленный в UISplitViewController, появляется как неправильная ориентация CoreData – несколько постоянных хранилищ Войдите в систему в iphone. Как перенести объект пользовательского интерфейса в swift, который имеет свои ограничения, установленные в раскадровке? ParseFacebookUtilsV4 активирует биткодную ошибку xcode 7 beta 6 Как изменить цвет пузырьков выносок в аннотации MapView? Принудительное приложение iPad для запуска в портрете, когда поддерживается пейзаж Xamarin.ios – таймер не выполняет действия после времени iOS: Вложенные виды прокрутки, переход от дочернего UIScrollView к родительскому среднему прокрутку Xcode: Наследовать `configuration`s из родительского проекта – невозможно? Реализовать дочерний UIView с фиксированным соотношением сторон к аспекту Выберите одну строку в каждом разделе UITableView ios?

Самый простой способ стилизовать текст UILabel в iOS7 / iOS8

Я изучаю цель немного, чтобы написать приложение для iPad. Я в основном делал некоторые проекты html5 / php и изучал некоторый питон в университете. Но одна вещь, которая действительно вызывает у меня мысли, заключается в том, как трудно просто нарисовать текст в объективной метке C.

Может быть, я родом из ленивого поколения, но на самом деле, если я хочу, чтобы UILabel выглядел так:

Задача: Построить равносторонний треугольник от отрезка AB.

В уценке это так же просто, как:

**Objective:** Construct an *equilateral* triangle from the line segment AB.

Нет ли на самом деле никакой цели, свободной от боли, C, чтобы сделать это? Все учебники, которые я читал, действительно хотели, чтобы я написал, как 15 строк кода. Для чего-то столь же простого, как это.

Итак, мой вопрос: какой самый простой способ сделать это, если у вас много стилей в вашем приложении? Будет ли стиль оформления более естественным с быстрым в iOS8?

Вы можете использовать данные NSAttributedString data:options:documentAttributes:error: initializer (первый доступный в iOS 7.0 SDK).

 import UIKit let htmlString = "<b>Objective</b>: Construct an <i>equilateral</i> triangle from the line segment AB." let htmlData = htmlString.dataUsingEncoding(NSUTF8StringEncoding) let options = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] var error : NSError? = nil let attributedString = NSAttributedString(data: htmlData, options: options, documentAttributes: nil, error: &error) if error == nil { // we're good } 

Примечание. Вы также можете включить опцию NSDefaultAttributesDocumentAttribute в словаре options чтобы обеспечить дополнительный глобальный стиль (например, не использовать Times New Roman).

Взгляните на ссылку NSAttributedString UIKit дополнений для получения дополнительной информации.

Я столкнулся с подобными расстройствами, пытаясь использовать приписанный текст в Xcode, поэтому я чувствую вашу боль. Вы можете определенно использовать несколько NSMutableAttributedtext для выполнения этой работы, но это очень жестко.

 UIFont *normalFont = [UIFont fontWithName:@"..." size:20]; UIFont *boldFont = [UIFont fontWithName:@"..." size:20]; UIFont *italicizedFont = [UIFont fontWithName:@"..." size:20]; NSMutableAttributedString *total = [[NSMutableAttributedString alloc]init]; NSAttributedString *string1 = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"Objective"] attributes:@{NSFontAttributeName:boldFont}]; NSAttributedString *string2 = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@": Construct an "] attributes:@{NSFontAttributeName:normalFont}]; NSAttributedString *string3 = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"equilateral "] attributes:@{NSFontAttributeName:italicizedFont}]; NSAttributedString *string4 = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"triangle from the line segment AB."] attributes:@{NSFontAttributeName:normalFont}]; [total appendAttributedString:string1]; [total appendAttributedString:string2]; [total appendAttributedString:string3]; [total appendAttributedString:string4]; [self.someLabel setAttributedText: total]; 

Другой вариант – использовать NSRegularExpression . Хотя для этого потребуется больше строк кода, это более жидкий способ смелости, изменения цвета и т. Д. Со всей строки сразу. Однако для ваших целей использование appendAttributedString будет самым коротким способом с меткой.

  UIFont *normalFont = [UIFont fontWithName:@"..." size:20]; UIFont *boldFont = [UIFont fontWithFamilyName:@"..." size: 20]; UIFont *italicizedFont = [UIFont fontWithFamilyName:@"..." size: 20]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat: @"Objective: Construct an equilateral triangle from the line segment AB."] attributes:@{NSFontAttributeName:normalFont}]; NSError *regexError; NSRegularExpression *regex1 = [NSRegularExpression regularExpressionWithPattern:@"Objective" options:NSRegularExpressionCaseInsensitive error:&regexError]; NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"equilateral" options:NSRegularExpressionCaseInsensitive error:&regexError]; if (!regexError) { NSArray *matches1 = [regex1 matchesInString:[attributedString string] options:0 range:NSMakeRange(0, [[attributedString string] length])]; NSArray *matches2 = [regex2 matchesInString:[attributedString string] options:0 range:NSMakeRange(0, [[attributedString string] length])]; for (NSTextCheckingResult *aMatch in matches1) { NSRange matchRange = [aMatch range]; [attributedString setAttributes:@{NSFontAttributeName:boldFont} range:matchRange]; } for (NSTextCheckingResult *aMatch in matches2) { NSRange matchRange = [aMatch range]; [attributedString setAttributes:@{NSFontAttributeName:italicizedFont} range:matchRange]; } [self.someLabel setAttributedText: attributedString];