Fixes AppViewController scrolling performance for apps with several privacy permissions

This commit is contained in:
Riley Testut
2023-05-24 16:19:58 -05:00
committed by Magesh K
parent a3c373108d
commit 0d79a01d74

View File

@@ -12,18 +12,23 @@ final class CollapsingTextView: UITextView
{ {
var isCollapsed = true { var isCollapsed = true {
didSet { didSet {
guard self.isCollapsed != oldValue else { return }
self.shouldResetLayout = true
self.setNeedsLayout() self.setNeedsLayout()
} }
} }
var maximumNumberOfLines = 2 { var maximumNumberOfLines = 2 {
didSet { didSet {
self.shouldResetLayout = true
self.setNeedsLayout() self.setNeedsLayout()
} }
} }
var lineSpacing: Double = 2 { var lineSpacing: Double = 2 {
didSet { didSet {
self.shouldResetLayout = true
if #available(iOS 16, *) if #available(iOS 16, *)
{ {
self.updateText() self.updateText()
@@ -37,6 +42,8 @@ final class CollapsingTextView: UITextView
override var text: String! { override var text: String! {
didSet { didSet {
self.shouldResetLayout = true
guard #available(iOS 16, *) else { return } guard #available(iOS 16, *) else { return }
self.updateText() self.updateText()
} }
@@ -44,6 +51,9 @@ final class CollapsingTextView: UITextView
let moreButton = UIButton(type: .system) let moreButton = UIButton(type: .system)
private var shouldResetLayout: Bool = false
private var previousSize: CGSize?
override init(frame: CGRect, textContainer: NSTextContainer?) override init(frame: CGRect, textContainer: NSTextContainer?)
{ {
super.init(frame: frame, textContainer: textContainer) super.init(frame: frame, textContainer: textContainer)
@@ -105,6 +115,8 @@ final class CollapsingTextView: UITextView
height: font.lineHeight) height: font.lineHeight)
self.moreButton.frame = moreButtonFrame self.moreButton.frame = moreButtonFrame
if self.shouldResetLayout || self.previousSize != self.bounds.size
{
if self.isCollapsed if self.isCollapsed
{ {
self.textContainer.maximumNumberOfLines = self.maximumNumberOfLines self.textContainer.maximumNumberOfLines = self.maximumNumberOfLines
@@ -138,6 +150,10 @@ final class CollapsingTextView: UITextView
self.invalidateIntrinsicContentSize() self.invalidateIntrinsicContentSize()
} }
self.shouldResetLayout = false
self.previousSize = self.bounds.size
}
} }
private extension CollapsingTextView private extension CollapsingTextView