【问题标题】:iOS 14 UIPageControl unselected page are treated as currentPageiOS 14 UIPageControl 未选择的页面被视为 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
    }

【问题讨论】:

    标签: ios objective-c swift ios14 uipagecontrol


    【解决方案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 官方文档中。
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多