Цветная часть строки - PullRequest
       39

Цветная часть строки

0 голосов
/ 22 апреля 2020

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

Код работает с использованием существующей строки:

let main_string = "Headline 5"
let string_to_color = "5"

Однако это не работает:

let main_string = "Headline "
let string_to_color = "\(stringTime) min" //stringTime is a string of a number, for example "21"


let range = (main_string as NSString).range(of: string_to_color)

let attribute = NSMutableAttributedString.init(string: main_string)
attribute.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.red , range: range)

 self.Label.attributedText = attribute

Любая идея, как заставить это работать, чтобы раскрасить строку, которая является переменной, и добавить это к моей строке?

1 Ответ

1 голос
/ 22 апреля 2020

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

class ViewController: UIViewController {

@IBOutlet weak var lblDisplay: UILabel!
var timer : Timer!
var timerLoop : Int = 0


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
}

@objc func timerFired()
{
    timerLoop += 1

    let main_string = "First part \(timerLoop) second part"
    let string_to_color = "\(timerLoop)" //stringTime is a string of a number, for example "21"


    let range = (main_string as NSString).range(of: string_to_color)

    let attribute = NSMutableAttributedString.init(string: main_string)
    attribute.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.red , range: range)

     self.lblDisplay.attributedText = attribute
}

}

...