Использование нескольких цветов шрифта в одной ярлыке

Есть ли способ использовать два или три цвета шрифта в одной ярлыке в iOS?

Если в качестве примера использовался текст «привет, как вы», «привет» будет синим, а «как вы» будет зеленым?

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

Дополнительную информацию см. В моем сообщении в блоге .

Прежде всего инициализируйте вас NSString и NSMutableAttributedString, как показано ниже.

var myString:NSString = "I AM KIRIT MODI" var myMutableString = NSMutableAttributedString() 

В ViewDidLoad

 override func viewDidLoad() { myMutableString = NSMutableAttributedString(string: myString, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!]) myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4)) // set label Attribute labName.attributedText = myMutableString super.viewDidLoad() } 

ВЫ ВЫХОД:

введите описание изображения здесь

МНОГОКРАТНЫЙ ЦВЕТ

Добавьте в себя ViewDidLoad под кодом строки, чтобы получить несколько цветов в строке.

  myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.greenColor(), range: NSRange(location:10,length:5)) 

Mupltiple color OUTPUT

введите описание изображения здесь

Обновлен ответ для Swift 4

Вы можете легко использовать html внутри атрибута attributedText свойства UILabel, чтобы легко выполнять различное форматирование текста.

  let htmlString = "<font color=\"red\">This is </font> <font color=\"blue\"> some text!</font>" let encodedData = htmlString.data(using: String.Encoding.utf8)! let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] do { let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) label.attributedText = attributedString } catch _ { print("Cannot create attributed String") } 

введите описание изображения здесь

Обновлен ответ для Swift 2

 let htmlString = "<font color=\"red\">This is </font> <font color=\"blue\"> some text!</font>" let encodedData = htmlString.dataUsingEncoding(NSUTF8StringEncoding)! let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] do { let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) label.attributedText = attributedString } catch _ { print("Cannot create attributed String") } 

Для @Hems Moradiya

введите описание изображения здесь

 let attrs1 = [NSFontAttributeName : UIFont.boldSystemFontOfSize(18), NSForegroundColorAttributeName : UIColor.greenColor()] let attrs2 = [NSFontAttributeName : UIFont.boldSystemFontOfSize(18), NSForegroundColorAttributeName : UIColor.whiteColor()] let attributedString1 = NSMutableAttributedString(string:"Drive", attributes:attrs1) let attributedString2 = NSMutableAttributedString(string:"safe", attributes:attrs2) attributedString1.appendAttributedString(attributedString2) self.lblText.attributedText = attributedString1 

Используемый rakeshbs ответ для создания расширения в Swift 2:

 // StringExtension.swift import UIKit import Foundation extension String { var attributedStringFromHtml: NSAttributedString? { do { return try NSAttributedString(data: self.dataUsingEncoding(NSUTF8StringEncoding)!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) } catch _ { print("Cannot create attributed String") } return nil } } 

Применение:

 let htmlString = "<font color=\"red\">This is </font> <font color=\"blue\"> some text!</font>" label.attributedText = htmlString.attributedStringFromHtml 

Или даже для однострочных

 label.attributedText = "<font color=\"red\">This is </font> <font color=\"blue\"> some text!</font>".attributedStringFromHtml 

Хорошая вещь о расширении заключается в том, что у вас будет атрибут .attributedStringFromHtml для всех String в вашем приложении.

Использовать NSMutableAttributedString

 myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4)) 

введите описание изображения здесь

Подробнее см. Здесь строки с быстрым использованием-атрибутами

Swift 3.0

 let myMutableString = NSMutableAttributedString( string: "your desired text", attributes: [:]) myMutableString.addAttribute( NSForegroundColorAttributeName, value: UIColor.blue, range: NSRange( location:6, length:7)) 

результат:

Для получения большего количества цветов вы можете просто добавлять атрибуты к изменяемой строке. Больше примеров здесь .

Мне это понравилось

 let yourAttributes = [NSForegroundColorAttributeName: UIColor.black, NSFontAttributeName: UIFont.systemFontOfSize(15)] let yourOtherAttributes = [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont.systemFontOfSize(25)] let partOne = NSMutableAttributedString(string: "This is an example ", attributes: yourAttributes) let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: yourOtherAttributes) let combination = NSMutableAttributedString() combination.appendAttributedString(partOne) combination.appendAttributedString(partTwo) 

Пример Swift 3 с использованием версии HTML.

 let encodedData = htmlString.data(using: String.Encoding.utf8)! let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] do { let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) label.attributedText = attributedString } catch _ { print("Cannot create attributed String") } 

Вот код, который поддерживает последнюю версию Swift по состоянию на март 2017 года.

Swift 3.0

Здесь я создал класс и метод Helper для

 public class Helper { static func GetAttributedText(inputText:String, location:Int,length:Int) -> NSMutableAttributedString { let attributedText = NSMutableAttributedString(string: inputText, attributes: [NSFontAttributeName:UIFont(name: "Merriweather", size: 15.0)!]) attributedText.addAttribute(NSForegroundColorAttributeName, value: UIColor(red: 0.401107, green: 0.352791, blue: 0.503067, alpha: 1.0) , range: NSRange(location:location,length:length)) return attributedText } } 

В параметрах метода inputText: String – ваш текст, который будет отображаться в месте метки: Int – где стиль должен быть приложением, «0» – как начало строки или некоторое допустимое значение в качестве позиции символа длины строки: Int – From до тех пор, пока не будет использовано количество символов этого стиля.

Потребление в другом методе:

 self.dateLabel?.attributedText = Helper.GetAttributedText(inputText: "Date : " + (self.myModel?.eventDate)!, location:0, length: 6) 

Вывод:

введите описание изображения здесь

Примечание. Цвет пользовательского интерфейса может быть определен как цвет UIColor.red или пользовательский цвет как UIColor(red: 0.401107, green: 0.352791, blue: 0.503067, alpha: 1.0)

 func MultiStringColor(first:String,second:String) -> NSAttributedString { let MyString1 = [NSFontAttributeName : FontSet.MonsRegular(size: 14), NSForegroundColorAttributeName : FoodConstant.PUREBLACK] let MyString2 = [NSFontAttributeName : FontSet.MonsRegular(size: 14), NSForegroundColorAttributeName : FoodConstant.GREENCOLOR] let attributedString1 = NSMutableAttributedString(string:first, attributes:MyString1) let attributedString2 = NSMutableAttributedString(string:second, attributes:MyString2) MyString1.append(MyString2) return MyString1 } 

SWIFT 3

В моем коде я создаю расширение

 import UIKit import Foundation extension UILabel { func setDifferentColor(string: String, location: Int, length: Int){ let attText = NSMutableAttributedString(string: string) attText.addAttribute(NSForegroundColorAttributeName, value: UIColor.blueApp, range: NSRange(location:5,length:4)) attributedText = attText } } 

и это для использования

 override func viewDidLoad() { super.viewDidLoad() titleLabel.setDifferentColor(string: titleLabel.text!, location: 5, length: 4) } 
  • Метка переменной длины, высота строк таблицы и автоматическая компоновка
  • Несколько строк текста в UILabel
  • UILabel font: жирный и курсив
  • Системный шрифт «Hiragino Sans» - это шоу с подрезанным поджатием и спусками
  • UITapGestureRecognizer работает с UIImageView, но не на UILabel
  • Создание UIButton Wrap после UILabel
  • Многострочные метки внутри scrollView отображаются только в одной строке и расширяются до полной ширины
  • Подчеркивать текст в UILabel в моноточе (портировать код ObjC)
  • Обычный текст обрезается внизу в iOS, как исправить в xCode?
  • Крошечная темная граница на ярлыке названия UIBUtton: что это такое и как его удалить?
  • UITableViewCell + Динамическая высота + Автоматическая компоновка
  • Давайте будем гением компьютера.