Использовать scrollview и pageconrol?

#ios #uiscrollview #swift #uipagecontrol

#iOS #uiscrollview #swift #uipagecontrol

Вопрос:

В Swift я создал вид прокрутки, он работает. Он горизонтальный и предназначен для страницы «учебника». Объекты отображаются на нем нормально. Он прокручивается нормально. В нем есть страницы. Но я хочу, чтобы страницы отображали текущую страницу на UIPageControl . Это весь мой код. В настоящее время элемент управления страницей работает только тогда, когда я провожу пальцем в определенном направлении по элементу управления страницей в представлении. Затем он меняет его. Он не перемещает объекты на экране. Вид прокрутки прокручивается, но не изменяет UIPageControl.

Код:

 var tutorialScrollView = UIScrollView()
var pageCounterForScrollView = UIPageControl()
tutorialScrollView.pagingEnabled = true
tutorialScrollView.bounces = true
tutorialScrollView.frame = CGRectMake(0, 0, 320, 568)
tutorialScrollView.userInteractionEnabled = true
tutorialScrollView.contentSize = CGSizeMake(1280, 568)
tutorialScrollView.showsHorizontalScrollIndicator = false

pageCounterForScrollView.numberOfPages = 3
pageCounterForScrollView.frame = CGRectMake(0, 0, 500, 100)
pageCounterForScrollView.center = CGPointMake(160, 528)
self.view.addSubview(scrollViewBGView)
self.view.addSubview(tutorialScrollView)
self.view.addSubview(pageCounterForScrollView)
self.tutorialScrollView.addSubview(reactFastSVLabel)
self.tutorialScrollView.addSubview(changingDotSVView)
self.tutorialScrollView.addSubview(learnPlaySVLabel)
self.tutorialScrollView.addSubview(simpleSVLabel)
self.tutorialScrollView.addSubview(oneColorSVImageView)
self.tutorialScrollView.addSubview(justDoThisSVLabel)

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    var newOffset: CGFloat = tutorialScrollView.contentOffset.x
    var newPage = Int(newOffset/tutorialScrollView.frame.size.width)
    pageCounterForScrollView.currentPage = newPage
}
  

Ответ №1:

Я не делал этого в swift, но я сделал это в Objective — C

 - (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
CGFloat pageWidth = self.horizontalMenu.bounds.size.width ;
     float fractionalPage = self.horizontalMenu.contentOffset.x / pageWidth ;
NSInteger nearestNumber = lround(fractionalPage) ;

if (self.pageControl.currentPage != nearestNumber)
{
    self.pageControl.currentPage = nearestNumber ;
    NSLog(@"%d",nearestNumber);
    // if we are dragging, we want to update the page control directly during the drag
    if (self.horizontalMenu.dragging)
        [self.pageControl updateCurrentPageDisplay] ;
}
}