Как получить точечный индикатор страницы для UICollectionView? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть UICollectionView , который имеет следующие настройки,

public CollectionView(CollectionLayout layout) : base(CGRect.Empty, layout)
{
    RegisterClassForCell(typeof(CollectionCell), CollectionCell.CellIdentifier);
    CollectionViewLayout = layout;
    ShowsHorizontalScrollIndicator = false;
    PagingEnabled = true;
}

CollectionViewLayout есть,

public CollectionLayout()
{
    ScrollDirection = UICollectionViewScrollDirection.Horizontal;
    MinimumInteritemSpacing = 0f;
    MinimumLineSpacing = 0f;
    ItemSize = new CGSize(UIScreen.MainScreen.Bounds.Width, 200f);
}

поэтому ячейки в CollectionView растянуты так, что ячейка заполняет CollectionView. CollectionView прокручивается только по горизонтали.

Теперь я хочу иметь пунктирный индикатор страницы вместо полосы прокрутки для CollectionView. Могу ли я в любом случае добиться этого должным образом?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Перетащите UIPageControl над своим collectionView и создайте IBOutlet UIPageControl в вашем ViewController.

Затем введите следующий код:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    pageControl.currentPage = Int(self.collectionView=.contentOffset.x)/ Int(self.collectionView.frame.width)
}
0 голосов
/ 25 апреля 2018

Я добавил UIPageControl компонент поверх CollectionView , установив его ограничения в нижней части CollectionView . Затем я получил экземпляр этого UIPageControl компонента в свойство CollectionSource UICollectionView.

Я установил свойства Pages и CurrentPage UIPageControl следующим образом:

public class CollectionSource : UICollectionViewSource
{
    private List<SourceDataModel> _dataSource;
    public UIPageControl PageControl { get; set; }

    // other code

    public override void DecelerationEnded(UIScrollView scrollView)
    {
        var index = (int)(Collection.ContentOffset.X / Collection.Frame.Width);
        PageControl.CurrentPage = index;
        // other code
    }

    public override nint GetItemsCount(UICollectionView collectionView, nint section)
    {
        PageControl.Pages = _dataSource.Count;
        return _dataSource.Count;
    }
}

Следующее руководство: https://blog.learningtree.com/paging-with-collection-views-part-2/

0 голосов
/ 25 апреля 2018

Используйте UIPageControl.Ссылка ниже: UIPageControl

Затем определите, в какой ячейке вы находитесь, и напишите некоторый код, чтобы изменить «currentPage» UIPageControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...