iOS 14 UIPageControl 未选择的页面被视为 currentPage

Posted

技术标签:

【中文标题】iOS 14 UIPageControl 未选择的页面被视为 currentPage【英文标题】:iOS 14 UIPageControl unselected page are treated as currentPage 【发布时间】:2020-11-25 04:51:02 【问题描述】:

当我使用 setIndicatorImage 为 UIPageControl 设置图像时,未选择页面的色调颜色设置为 currentPageIndicatorTintColor,但当前页面的色调颜色是默认指示器色调颜色。

    self.customPageControl.currentPage = currentPage;
    
    if (@available(ios 14.0, *)) 
        _pageControl.pageIndicatorTintColor = [UIColor blueColor];
        _pageControl.currentPageIndicatorTintColor = [UIColor greenColor];

        for(int i=0; i<self.pageControl.numberOfPages; i++)
            if(i == currentPage)
                [self.pageControl setIndicatorImage:[UIImage imageNamed:@"pageCtrlSelected"] forPage:i];
            
            else
                [self.pageControl setIndicatorImage:[UIImage imageNamed:@"pageCtrlUnselect"] forPage:i];
            
        
        
     else 
        // Fallback on earlier versions
    

【问题讨论】:

【参考方案1】:

最后我通过在设置指示器图像循环后调用设置当前页面解决了这个问题。代码截图如下。

if (@available(iOS 14.0, *)) 
    _pageControl.pageIndicatorTintColor = [UIColor blueColor];
    _pageControl.currentPageIndicatorTintColor = [UIColor greenColor];

    for(int i=0; i<self.pageControl.numberOfPages; i++)
        if(i == currentPage)
           [self.pageControl setIndicatorImage:[UIImage imageNamed:@"pageCtrlSelected"] forPage:i];
        
        else
           [self.pageControl setIndicatorImage:[UIImage imageNamed:@"pageCtrlUnselect"] forPage:i];
        
    
        
 else 
    // Fallback on earlier versions


/// It's important that set currentPage after set indicator image !!!!
self.customPageControl.currentPage = currentPage;

【讨论】:

感谢您的解决方案。这应该记录在 Apple 官方文档中。

以上是关于iOS 14 UIPageControl 未选择的页面被视为 currentPage的主要内容,如果未能解决你的问题,请参考以下文章