Когда я пытаюсь прокрутить сверху вниз, элементы CollectionView сталкиваются на странице контента на платформе iOS, но на платформе Android это работает нормально. Ниже я добавляю скриншот и запись экрана этой проблемы.
Скриншот:
Запись с экрана:
запись экрана ссылка
Я использую CollectionView для этой страницы контента, ниже приведен код:
<CollectionView
Grid.Row = "1"
ZIndex = "5"
Margin = "5,0"
IsVisible = "false"
SelectionMode = "Single"
BackgroundColor = "Transparent"
x:Name = "AccountInvoicelistview"
ItemsLayout = "VerticalGrid"
SelectionChanged = "invoice_ItemTapped">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout
HorizontalOptions = "FillAndExpand"
Orientation = "Vertical"
BackgroundColor = "{Binding invoice.BGColor}"
Padding = "5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "75*"/>
<ColumnDefinition Width = "25*"/>
</Grid.ColumnDefinitions>
<Label
Text = "{Binding invoice.title, Converter = {StaticResource specialCharactorConverter}}"
</Label>
<Label
Text = "{Binding invoice.status, Converter = {StaticResource specialCharactorConverter}}"
</Label>
</Grid>
<Label
Text = "{Binding createdLocation.locationName, Converter = {StaticResource specialCharactorConverter}}"
</Label>
<StackLayout
Margin = "5,0"
HorizontalOptions = "StartAndExpand"
VerticalOptions = "StartAndExpand"
IsVisible = "{Binding LockedVisibility}"
Orientation = "Horizontal">
<Label
Text = "{Binding lockedLocation.locakedStatusText, Converter = {StaticResource specialCharactorConverter}}"
</Label>
<Image
Style = "{StaticResource RequestHeaderImageStyle}"
Source = "ic_green_tick_xx.png">
</Image>
</StackLayout>
<StackLayout
Orientation = "Horizontal"
HorizontalOptions = "FillAndExpand">
<Label
Text = "{Binding invoice.Amount, StringFormat='${0:F0}'}"
</Label>
<Label
Text = "{Binding invoice.dueDate, StringFormat='Due date: {0:F0}',
</Label>
</StackLayout>
<BoxView
HeightRequest = "1"
Margin = "0,5,0,0"
BackgroundColor = "#cecece"
HorizontalOptions = "FillAndExpand"/>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Можете ли вы предложить мне решение этой проблемы? Эта проблема существует только на платформе iOS.
Обновлять
Я создал образец проекта и загрузил его здесь.
Ожидаемый интерфейс:
@SeanHe-MSFT Мы добавили поля для обоих макетов стека, но не изменили пользовательский интерфейс.
Связано ли это с версией системы? Пробовали ли вы другие версии iOS?
@Leon Мы используем .NET 7.0, и проблема возникает в симуляторе iOS. macOS версия 14.4.1
@ user10627299 Мы добавили образец проекта по этому вопросу, не могли бы вы это проверить?
Я рекомендую использовать Grid для макета, не используйте StackLayout, когда требуется точное позиционирование.
Да, элементы CollectionView конфликтуют при прокрутке CollectionView.
В качестве обходного пути вы можете попробовать следующий код, чтобы установить определения строк для SearchBar
и CollectionView
. Используя Auto
к свойству Height RowDefinition,
<Grid
Margin = "0,0,0,5"
Padding = "3"
VerticalOptions = "FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
<RowDefinition Height = "*" />
</Grid.RowDefinitions>
<Frame
Grid.Row = "0"
...
<CollectionView
Grid.Row = "1"
...
Для получения дополнительной информации вы можете обратиться к Строки и столбцы.
Установите сетку с высотой вместо внутреннего макета стека в Listview.
Если вы добавите значение
margin
в<StackLayout Margin = "5,0" HorizontalOptions = "StartAndExpand" VerticalOptions = "StartAndExpand" IsVisible = "{Binding LockedVisibility}" Orientation = "Horizontal">
или установите <StackLayout> <Label Text = "{Bindingvoice.Amount, StringFormat='${0:F0}'}" С новым свойством поля изменится ли макет представления?