当 UICollectionViewFlowLayout.PrepareLayout() 时,Xamarin iOS 应用程序在 Monitor 中暂停
Xamarin iOS Application suspended in Monitor when UICollectionViewFlowLayout.PrepareLayout()
Xamarin iOS 应用程序在 CollectionView.IsVisible = false
启动时无限挂起。
在 Android 上,有效。但是,在 iOS 上,设置 CollectionView.IsVisible = false
导致应用程序冻结。
<StackLayout
Margin="0,20,0,0">
<Button
HorizontalOptions="CenterAndExpand"
WidthRequest="100"
Clicked="Button_Clicked"
Text="Click Me"/>
<CollectionView
x:Name="Collection"
VerticalOptions="FillAndExpand"
ItemsSource="{Binding Items}"
SelectionMode="Single"
IsVisible="False">
<CollectionView.ItemsLayout>
<GridItemsLayout
Orientation="Vertical"
Span="4"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout
Margin="10,10,10,10">
<Image
WidthRequest="50"
HeightRequest="50"
Source="{local:ImageResource CollectionView.Image.png}"/>
<Label
Text="{Binding Title}"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
有一个 解决方法 可以解决 iOS 的这个问题,您可以在之后设置 CollectionView 的 Visiable
布局已初始化。
例如从Xaml中去掉IsVisible="False"
,然后在ContentPage.cs中设置在 OnAppearing
方法中:
protected override void OnAppearing()
{
base.OnAppearing();
Collection.IsVisible = false;
}
效果:
Xamarin iOS 应用程序在 CollectionView.IsVisible = false
启动时无限挂起。
在 Android 上,有效。但是,在 iOS 上,设置 CollectionView.IsVisible = false
导致应用程序冻结。
<StackLayout
Margin="0,20,0,0">
<Button
HorizontalOptions="CenterAndExpand"
WidthRequest="100"
Clicked="Button_Clicked"
Text="Click Me"/>
<CollectionView
x:Name="Collection"
VerticalOptions="FillAndExpand"
ItemsSource="{Binding Items}"
SelectionMode="Single"
IsVisible="False">
<CollectionView.ItemsLayout>
<GridItemsLayout
Orientation="Vertical"
Span="4"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout
Margin="10,10,10,10">
<Image
WidthRequest="50"
HeightRequest="50"
Source="{local:ImageResource CollectionView.Image.png}"/>
<Label
Text="{Binding Title}"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
有一个 解决方法 可以解决 iOS 的这个问题,您可以在之后设置 CollectionView 的 Visiable
布局已初始化。
例如从Xaml中去掉IsVisible="False"
,然后在ContentPage.cs中设置在 OnAppearing
方法中:
protected override void OnAppearing()
{
base.OnAppearing();
Collection.IsVisible = false;
}
效果: