UIPageControl消失了

时间:2013-08-23 12:50:27

标签: ios uiscrollview uipagecontrol

我已经在这方面工作了很长一段时间,我只是想不通。

我的页面控件不断消失。

我最初拥有自己的代码,因此它可以正常显示页面控件,在滚动视图之间。

我现在如何改变它并且在两个视图上向前滚动时显示,而其他视图控件甚至不显示它们。当您向后滚动到第一个视图时,页面控件也会消失(包括它在运行我的代码时开始处理的两个。

我的所有观点都有相同的设置,所以我不确定为什么会这样。

以下是我正在使用的代码标题:

- (void)scrollViewDidScroll:(UIScrollView *)sender {

    if (_pageControlUsed || _rotating) {
        // do nothing - the scroll was initiated from the page control, not the user dragging
        return;
    }

    // Switch the indicator when more than 50% of the previous/next page is visible
    CGFloat pageWidth = self.scrollView.frame.size.width;
    int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    if (self.pageControl.currentPage != page  && page>=0 && page<self.childViewControllers.count) {
        UIViewController *oldViewController = [self.childViewControllers objectAtIndex:self.pageControl.currentPage];
        UIViewController *newViewController = [self.childViewControllers objectAtIndex:page];
        [oldViewController viewWillDisappear:YES];
        [newViewController viewWillAppear:YES];
        self.pageControl.currentPage = page;
        [oldViewController viewDidDisappear:YES];
        [newViewController viewDidAppear:YES];
        _page = page;


        CGRect frame = pageControl.frame;
        frame.origin.x = pageWidth;
        pageControl.frame = frame;
    }
}

如果有人知道我哪里出错了,可以帮助我,那将是辉煌的。

请注意,我仍然是编程和xcode的新手。

1 个答案:

答案 0 :(得分:0)

请以这种简单方式PageControl Sample

添加页面控件
- (void)scrollViewDidScroll:(UIScrollView *)sender {
    // Update the page when more than 50% of the previous/next page is visible
    CGFloat pageWidth = self.scrollView.frame.size.width;
    int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    self.pageControl.currentPage = page;
}

并改变

- (IBAction)changePage {
    // update the scroll view to the appropriate page
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;
    [self.scrollView scrollRectToVisible:frame animated:YES];
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    pageControlBeingUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    pageControlBeingUsed = NO;
}