Workaround text view not being baseline-aligned with label

Closes #509
This commit is contained in:
Shadowfacts 2024-07-20 11:08:59 -07:00
parent 870d0c8404
commit 5f040ed390
1 changed files with 22 additions and 1 deletions

View File

@ -54,8 +54,8 @@ class ProfileFieldValueView: UIView {
textView.isScrollEnabled = false textView.isScrollEnabled = false
textView.isSelectable = false textView.isSelectable = false
textView.isEditable = false textView.isEditable = false
textView.textContainerInset = .zero
textView.font = .preferredFont(forTextStyle: .body) textView.font = .preferredFont(forTextStyle: .body)
updateTextContainerInset()
textView.adjustsFontForContentSizeCategory = true textView.adjustsFontForContentSizeCategory = true
textView.attributedText = converted textView.attributedText = converted
textView.setEmojis(account.emojis, identifier: account.id) textView.setEmojis(account.emojis, identifier: account.id)
@ -108,6 +108,27 @@ class ProfileFieldValueView: UIView {
return size return size
} }
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.preferredContentSizeCategory != previousTraitCollection?.preferredContentSizeCategory {
updateTextContainerInset()
}
}
private func updateTextContainerInset() {
// blergh
switch traitCollection.preferredContentSizeCategory {
case .extraSmall:
textView.textContainerInset = UIEdgeInsets(top: 4, left: 0, bottom: 0, right: 0)
case .small:
textView.textContainerInset = UIEdgeInsets(top: 3, left: 0, bottom: 0, right: 0)
case .medium, .large:
textView.textContainerInset = UIEdgeInsets(top: 2, left: 0, bottom: 0, right: 0)
default:
textView.textContainerInset = .zero
}
}
func setTextAlignment(_ alignment: NSTextAlignment) { func setTextAlignment(_ alignment: NSTextAlignment) {
textView.textAlignment = alignment textView.textAlignment = alignment
} }