From d4b6d32b790542f9d2a4e1d68689e82f5928b8a3 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 4 Apr 2023 13:50:00 -0500 Subject: [PATCH] =?UTF-8?q?Fixes=20CollapsingTextView=20=E2=80=9CTextKit?= =?UTF-8?q?=201=20compatibility=20mode=E2=80=9D=20runtime=20warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AltStore/Components/CollapsingTextView.swift | 63 +++++++++++++++++++- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/AltStore/Components/CollapsingTextView.swift b/AltStore/Components/CollapsingTextView.swift index 656a8fcb..8ffef7a3 100644 --- a/AltStore/Components/CollapsingTextView.swift +++ b/AltStore/Components/CollapsingTextView.swift @@ -22,19 +22,57 @@ class CollapsingTextView: UITextView } } - var lineSpacing: CGFloat = 2 { + var lineSpacing: Double = 2 { didSet { - self.setNeedsLayout() + if #available(iOS 16, *) + { + self.updateText() + } + else + { + self.setNeedsLayout() + } + } + } + + override var text: String! { + didSet { + guard #available(iOS 16, *) else { return } + self.updateText() } } let moreButton = UIButton(type: .system) + override init(frame: CGRect, textContainer: NSTextContainer?) + { + super.init(frame: frame, textContainer: textContainer) + + self.initialize() + } + + required init?(coder: NSCoder) + { + super.init(coder: coder) + } + override func awakeFromNib() { super.awakeFromNib() - self.layoutManager.delegate = self + self.initialize() + } + + private func initialize() + { + if #available(iOS 16, *) + { + self.updateText() + } + else + { + self.layoutManager.delegate = self + } self.textContainerInset = .zero self.textContainer.lineFragmentPadding = 0 @@ -108,6 +146,25 @@ private extension CollapsingTextView { self.isCollapsed.toggle() } + + @available(iOS 16, *) + func updateText() + { + do + { + let style = NSMutableParagraphStyle() + style.lineSpacing = self.lineSpacing + + var attributedText = try AttributedString(self.attributedText, including: \.uiKit) + attributedText[AttributeScopes.UIKitAttributes.ParagraphStyleAttribute.self] = style + + self.attributedText = NSAttributedString(attributedText) + } + catch + { + print("[ALTLog] Failed to update CollapsingTextView line spacing:", error) + } + } } extension CollapsingTextView: NSLayoutManagerDelegate