mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Fix user suggestion list item height on iOS 16+
This commit is contained in:
parent
c1a9f31ded
commit
3c973921fa
2 changed files with 32 additions and 2 deletions
|
@ -23,6 +23,15 @@ struct UserSuggestionList: View {
|
|||
static let lineSpacing: CGFloat = 10.0
|
||||
static let maxHeight: CGFloat = 300.0
|
||||
static let maxVisibleRows = 4
|
||||
|
||||
/*
|
||||
As of iOS 16.0, SwiftUI's List uses `UICollectionView` instead
|
||||
of `UITableView` internally, this value is an adjustment to apply
|
||||
to the list items in order to be as close as possible as the
|
||||
`UITableView` display.
|
||||
*/
|
||||
@available (iOS 16.0, *)
|
||||
static let collectionViewPaddingCorrection: CGFloat = -5.0
|
||||
}
|
||||
|
||||
// MARK: - Properties
|
||||
|
@ -72,8 +81,7 @@ struct UserSuggestionList: View {
|
|||
displayName: item.displayName,
|
||||
userId: item.id
|
||||
)
|
||||
.padding(.bottom, Constants.listItemPadding)
|
||||
.padding(.top, viewModel.viewState.items.first?.id == item.id ? Constants.listItemPadding + Constants.topPadding : Constants.listItemPadding)
|
||||
.modifier(ListItemPaddingModifier(isFirst: viewModel.viewState.items.first?.id == item.id))
|
||||
}
|
||||
}
|
||||
.listStyle(PlainListStyle())
|
||||
|
@ -82,6 +90,27 @@ struct UserSuggestionList: View {
|
|||
contentHeightForRowCount(viewModel.viewState.items.count))))
|
||||
.id(UUID()) // Rebuild the whole list on item changes. Fixes performance issues.
|
||||
}
|
||||
|
||||
private struct ListItemPaddingModifier: ViewModifier {
|
||||
private let isFirst: Bool
|
||||
|
||||
init(isFirst: Bool) {
|
||||
self.isFirst = isFirst
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
var topPadding: CGFloat = isFirst ? Constants.listItemPadding + Constants.topPadding : Constants.listItemPadding
|
||||
var bottomPadding: CGFloat = Constants.listItemPadding
|
||||
if #available(iOS 16.0, *) {
|
||||
topPadding += Constants.collectionViewPaddingCorrection
|
||||
bottomPadding += Constants.collectionViewPaddingCorrection
|
||||
}
|
||||
|
||||
return content
|
||||
.padding(.top, topPadding)
|
||||
.padding(.bottom, bottomPadding)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct BackgroundView<Content: View>: View {
|
||||
|
|
1
changelog.d/7492.bugfix
Normal file
1
changelog.d/7492.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix user suggestion list item height on iOS 16+
|
Loading…
Reference in a new issue