При обновлении iOS 13.4 интервалы между верхним и нижним строками NSAttributedString
не совпадают.
Этот код работает на iOS 13,3 и iOS 13,4.
iOS 13,3
iOS 13.4
Вот код для генерации приписанной строки с этим стилем:
struct Utility {
static func customAttributedString(first: String, second: String, firstColor: UIColor = .white, secondColor: UIColor = .purple, size: CGFloat = 60) -> NSAttributedString {
let styleAttributes = NSMutableParagraphStyle()
let stringAttributes:[NSAttributedString.Key: Any] = [.font : (UIFont.drukBold?.withSize(size))!,
.foregroundColor: firstColor,
.paragraphStyle: styleAttributes]
let stringSecondAttributes:[NSAttributedString.Key: Any] = [.font : (UIFont.drukBold?.withSize(size))!,
.foregroundColor: secondColor,
.paragraphStyle: styleAttributes]
let string = " \(first) ".uppercased()
let secondString = "\n \(second) ".uppercased()
let mutable = NSMutableAttributedString(string: string, attributes: stringAttributes)
let secondMutable = NSMutableAttributedString(string: secondString, attributes: stringSecondAttributes)
mutable.append(secondMutable)
var startIndex = mutable.string.startIndex
while let range = mutable.string.range(of: "\\n", options: .regularExpression, range: startIndex..<mutable.string.endIndex) {
mutable.addAttribute(.backgroundColor, value: UIColor.black, range: NSRange(Range(uncheckedBounds: (lower: startIndex, upper: range.lowerBound)), in: mutable.string))
startIndex = range.upperBound
}
mutable.addAttribute(.backgroundColor, value: UIColor.black, range: NSRange(Range(uncheckedBounds: (lower: startIndex, upper: mutable.string.endIndex)), in: mutable.string))
return mutable
}
}
Есть ли способ иметь одинаковые верх и низ интервал в обеих версиях?
РЕДАКТИРОВАТЬ: На самом деле я играл на NSAttributedString
, чтобы узнать, что является причиной этого, и я только что обнаружил, что использование системного шрифта будет иметь нужное поведение без проблем. Я не знаю, почему поведение пользовательских шрифтов изменилось между версиями? может быть, они изменили способ обработки пользовательских шрифтов