From 98dd6f3fe761916fd4027f1aab87c59054b928fe 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 | 35 ++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/AltStore/Components/CollapsingTextView.swift b/AltStore/Components/CollapsingTextView.swift index be966c54..3392e3bb 100644 --- a/AltStore/Components/CollapsingTextView.swift +++ b/AltStore/Components/CollapsingTextView.swift @@ -22,7 +22,7 @@ final class CollapsingTextView: UITextView } } - var lineSpacing: CGFloat = 2 { + var lineSpacing: Double = 2 { didSet { self.setNeedsLayout() } @@ -34,7 +34,19 @@ final class CollapsingTextView: UITextView { 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 +120,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