Я пытаюсь создать блок if, проверяя, является ли размер шрифта NSMutableAttributedString меньше/больше некоторого значения. Я не мог найти объяснения этому. Пример кода выглядит следующим образом:
if textView.font.pointSize < 30 {
//execute
}
где строка внутри textView равна NSMutableAttributedString
. Есть идеи?
@Larme Спасибо, Ларме, я не думал об этом. Потом пробую разные методы. Вы действительно полезный программист, я очень ценю
Не проверял, но должно помочь
extension UITextView {
func maxPointSize() -> CGFloat {
var max: CGFloat = font?.pointSize ?? 0.0 //In case you mix .attributedText and .text but I'd recommand to avoid mixing them.
guard let attributedString = attributedText else { return max }
attributedString.enumerateAttribute(.font, in: NSRange(location: 0, length: attributedString.length), options: []) { value, range, pointee in
guard let font = value as? UIFont else { return }
max = font.pointSize > max ? font.pointSize : max
}
return max
}
}
Идея состоит в том, чтобы перечислить шрифты внутри NSAttributedString
и сохранить максимальное значение.
Затем
if textView.maxPointSize() < 30 {
//execute
}
В NSAttributedString вы можете иметь несколько размеров. Поэтому, если вы хотите проверить размеры, вам нужно перечислить (как и ваш предыдущий вопрос, чтобы изменить его). Вместо того, чтобы изменить его, как раньше, просто сохранить размер и получить максимальный или что-то в этом роде?