swift - 字符串的颜色部分
问题描述
我试图在 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
知道如何使它在作为变量的字符串中着色并将其添加到我的字符串中吗?
解决方案
对于这个例子,我有一个每秒触发一次的计时器,然后在显示的字符串中间建立一个带有递增计数器变量的字符串 - 这是否符合您的需要?
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
}
}
推荐阅读
- swift - 应用程序终止后如何在 iOS 中获取位置或任何更新?
- elasticsearch - 如何在弹性搜索中为每小时访问者构建数据
- c# - 如何使用线程数组调用使用 linq 在 DB EF 上更新的相同函数?
- php - 使用 PHP 和 Imagick 检测图像上的对象位置(右、左)
- javascript - 在 Laravel 护照、vueJS 和 Axios 中获得未经授权的 401
- java - 如何禁用从条形码蓝牙阅读器到 EditText 的文本输入?
- angular - 订阅方法返回未定义
- json - 如何在杰克逊的自定义反序列化器中访问 ObjectMapper?
- javascript - Firebase 函数获取下载 URL(不应过期且不公开)
- android - 将导航组件与 BottomNavigationView 一起使用时禁用动画