2016-04-19 2 views
1

Я работаю над Xamarin IOS, я хочу отображать элементы в стиле Grid, используя концепцию представления коллекций. Я попробовал пример образца коллекции. Sample Collection View ExampleXamarin IOS Collection View with Custom Cell

Но элементы отображаются в качестве примера. Но я хочу отображать элементы в Grid Style, пожалуйста, посмотрел изображение ниже.

enter image description here

+4

Опубликовать код, или никто не будет знать, что произошло –

+0

Пожалуйста, взгляните на https://developer.xamarin.com/guides/ios/user_interface/introduction_to_collection_views/ и, в частности, https://developer.xamarin.com/guides/ios/user_interface/introduction_to_collection_views/# Data_Source для двух ячеек в одной строке – Pilatus

ответ

1

Это довольно грубый пример из быстрый тест, который я делал на том же примере кода:

enter image description here

[Export ("initWithFrame:")] 
    public ProductCell (CGRect frame) : base (frame) 
    { 
     BackgroundView = new UIView{ BackgroundColor = UIColor.DarkGray }; 
     SelectedBackgroundView = new UIView{ BackgroundColor = UIColor.Green }; 

     ContentView.Layer.BorderColor = UIColor.LightGray.CGColor; 
     ContentView.Layer.BorderWidth = 2.0f; 
     ContentView.BackgroundColor = UIColor.Gray; 

     cellViewContainer = new UIView(); 
     cellViewContainer.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; 

     imageView = new UIImageView (UIImage.FromBundle ("placeholder.png")); 
     productName = new UILabel { 
      Text = "Name", 
      TextColor = UIColor.Black, 
      BackgroundColor = UIColor.White, 
      TextAlignment = UITextAlignment.Center 
     }; 
     price = new UILabel { 
      Text = "Price", 
      TextColor = UIColor.Black, 
      BackgroundColor = UIColor.Red, 
      TextAlignment = UITextAlignment.Center 
     }; 
     var labelHeight = (ContentView.Bounds.Height - 2)/2; 
     var labelWidth = (ContentView.Bounds.Width - 2)/2; 
     productName.Frame = new CGRect(5, 5, labelWidth, labelHeight); 
     price.Frame = new CGRect(5, labelHeight, labelWidth, labelHeight); 
     imageView.Frame = new CGRect (labelWidth, 0, labelWidth, ContentView.Bounds.Height - 2); 

     ContentView.AddSubviews (new UIView[] { imageView, productName, price }); 
    } 
+0

Привет @SushiHangover, я пробовал с вашим кодом. но в моем случае он показывает все записи/элементы в одной строке. Поскольку список товарных элементов содержит 10 записей/элементов. он отображается в одной строке. Если возможно, вы можете поделиться своим кодом с моим идентификатором почты. Спасибо. \ Email: [email protected] –

0

В этом примере кода вы не могли бы просто сделать это:

// Flow Layout 
     flowLayout = new UICollectionViewFlowLayout(){ 
      ItemSize = new CGSize ((float)UIScreen.MainScreen.Bounds.Size.Width/2.0f, (float)UIScreen.MainScreen.Bounds.Size.Width/2.0f), 
      HeaderReferenceSize = new CGSize (100, 100), 
      SectionInset = new UIEdgeInsets (0,0,0,0), 
      ScrollDirection = UICollectionViewScrollDirection.Vertical, 
      MinimumInteritemSpacing = 0, // minimum spacing between cells 
      MinimumLineSpacing = 0 // minimum spacing between rows if ScrollDirection is Vertical or between columns if Horizontal 
     }; 

Чтобы получить ячейку размером в половину ширины экрана. Если вам нужен другой элемент в этом макете, вам нужно будет опубликовать некоторый код.

This также отличный учебник по UICollectionViews с пользовательских макетов ИТС в родном коде, но должно быть легко перевести на C#

Или взглянуть на этот вопрос UICollectionView for Grid Layout with Xamarin.iOS (MonoTouch)?

Смежные вопросы