使用Xamarin,我正在尝试创建一个UICollectionViewFlowLayout,其中我的单元格将是设备的宽度并垂直向下流动。像Facebook新闻标签iOS应用程序的东西。
目前要在布局中获取单元格,这里是代码:
public override async void ViewWillAppear (bool animated)
{
try{
base.ViewWillAppear (animated);
var layout = new UICollectionViewFlowLayout ();
layout.MinimumInteritemSpacing = 30;
var collectionView = new NewsListView (UIScreen.MainScreen.ApplicationFrame, layout);
collectionView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
collectionView.BackgroundColor = UIColor.LightGray;
collectionView.RegisterClassForCell (typeof(NewsListViewCell), cellId);
collectionView.ReloadData ();
CollectionView = collectionView;
Logger.Log(""+CollectionView.Bounds.Width);
}catch(Exception ex){
Logger.Log (ex);
ShowUserMessage ("Error",ex.Message);
}
}
我想用它来设置项目的大小: layout.ItemSize = new CGSize(CollectionView.Bounds.Width-20,200.0f);
但是当我创建UICollectionViewFlowLayout时,CollectionView还不存在,
有没有其他方法可以将UICollectionViewFlowLayout的大小设置为设备的宽度?
答案 0 :(得分:3)
我找到了解决问题的方法。我将布局创建为全局变量,然后将其添加到ViewDidLoad()中的视图,然后在ViewWillAppear(..)中我可以设置layout.ItemSize
所以我的代码如下:
new Thread(() => MyFunc(myParam)).Start()
这样,布局的项目宽度始终基于设备宽度而不是硬编码