Вы можете использовать String.Index
метод
func index(_ i: String.Index, offsetBy n: String.IndexDistance, limitedBy limit: String.Index) -> String.Index?
на вашем string.endIndex
с отрицательным смещением, равным двум и ограниченным вашим string.startIndex
:
let string = "1.1212"
if let start = string.index(string.endIndex, offsetBy: -2, limitedBy: string.startIndex) {
print(string[start..<string.endIndex]) // "12\n"
// or using a partial range
print(string[start...]) // "12\n"
}
Применение меньшего размера и цвета шрифта к нему с сохранением исходного шрифта метки:
Тестирование игровой площадки:
let string = "1.1212"
let label = UILabel(frame: .zero)
label.attributedText = NSAttributedString(string: string)
if let start = string.index(string.endIndex, offsetBy: -2, limitedBy: string.startIndex), let attrStr = label.attributedText {
let mutableAttributedString = NSMutableAttributedString(attributedString: attrStr)
mutableAttributedString.addAttributes([NSAttributedString.Key.foregroundColor: UIColor.red, NSAttributedString.Key.font: label.font.withSize(label.font.pointSize * 0.6)], range: .init(start..<string.endIndex, in: string))
label.attributedText = mutableAttributedString
label.sizeToFit()
}