Коллекция Просмотр макета потока с эффектом масштабирования и видимыми тремя элементами - PullRequest
0 голосов
/ 22 мая 2018

Этот вопрос может быть помечен как не очень хорошо заданный, но лучше ваш.

Я пытаюсь найти решение о том, как создать представление коллекции в Xamarin.iOS с тремя видимыми элементами, один по центру и два наобе стороны частично видны слева и справа.Примерно так https://github.com/lukagabric/LGLinearFlow. Я нашел много быстрых и объективных реализаций c, но ничего для Xamarin.iOS.

Наиболее близким, что я обнаружил, было использование пользовательского UICollectionViewFlowLayout в документации по разделу Подклассы UICollectionViewFlowLayout https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview но не определено, как его использовать.

Знаете ли вы какую-то реализацию или как реализовать ее в Xamarin.iOS Native?

1 Ответ

0 голосов
/ 23 мая 2018

По мере публикации в этой документации https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview рассказывается, как реализовать flowLayout.Нам просто нужно инициализировать UICollectionView с этим макетом потока.

Построить новое представление коллекции :

LineLayout lineLayout = new LineLayout();

UICollectionView collectionView = new UICollectionView(View.Bounds, lineLayout);
View.AddSubview(collectionView);
collectionView.DataSource = new MyCollectionViewSource();
collectionView.BackgroundColor = UIColor.White;

collectionView.RegisterNibForCell(UINib.FromName("MyCollectionViewCell", null), "Cell");

Тогда его источник данных может быть похож наэто :

public class MyCollectionViewSource : UICollectionViewDataSource
{
    public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
    {
        MyCollectionViewCell cell = collectionView.DequeueReusableCell("Cell", indexPath) as MyCollectionViewCell;

        cell.MyStr = "label" + indexPath.Row;

        return cell;
    }

    public override nint GetItemsCount(UICollectionView collectionView, nint section)
    {
        return 20;
    }       
}

Обратите внимание, что константу в LineLayout можно настроить в соответствии с вашими требованиями.И SectionInset означает расстояние между каждым разделом, мы должны отрегулировать его, чтобы убедиться, что CollectionView имеет только одну строку.

Я сделал образец здесь для вас.

...