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的主要内容,如果未能解决你的问题,请参考以下文章

UIPageControl 不与 IOS7 中的 UIImageView 一起使用

UIPageControl 点边框颜色

UIPageViewController setViewControllers,UIPageControl 未显示正确的当前编号

UIPageControl 似乎并不总是在滚动时发生变化

iOS 14 UIColorPicker 吸管工具未返回所选颜色

如何以不同的方式设置 UIPageControl 的当前页面指示点的样式?