UIPageControl 消失

Posted

技术标签:

【中文标题】UIPageControl 消失【英文标题】:UIPageControl Disappearing 【发布时间】:2013-08-23 12:50:27 【问题描述】:

我已经为此工作了很长一段时间,但我只是想不通。

我的页面控件不断消失。

我最初有我的代码,因此它可以工作,但它在滚动视图之间显示页面控件。

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

我所有的视图都有相同的设置,所以我不确定为什么会一直发生这种情况。

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

- (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】:

请用这种简单的方式添加页面控件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;

【讨论】:

感谢您的快速回复!完美运行! @iphonemaclover

以上是关于UIPageControl 消失的主要内容,如果未能解决你的问题,请参考以下文章

UIPageControl - 如何使背景透明?

UIPageControl

选择垂直时 UIPageControl 不出现

为啥我的 UIpageControl 不显示?

检测 UIPageControl 页面变化

UIPageControl 点之间的空间较大