iOS 14 UIPageControl设置样式 不生效的解决方案

765 阅读1分钟

iOS 14 UIPageControl设置样式 不生效, 需要的正确设置顺序才能 显示正常

初始化的顺序必须一一对应

        // Page 设置的顺序不能错,不然会样式会混乱

        pageC.numberOfPages = 3

        let startpage = 0

        if #available(iOS 14.0, *) {

            pageC.preferredIndicatorImage =  imageLiteral(resourceName: "defaultIndicator")

            pageC.setIndicatorImage( imageLiteral(resourceName: "selectedIndicator"), forPage: startpage)

        } else {

            // Fallback on earlier versions

        }

        // 设置颜色

        pageC.currentPageIndicatorTintColor = .XWGreen

        pageC.pageIndicatorTintColor = .XWGreen

        // 最后设置当前页面

        pageC.currentPage = 0

当前页变化后的设置

extension WelcomeVC:UIScrollViewDelegate {

    

    private func toPageView(_ View:UIView){

        scrollV.scrollRectToVisible(View.frame, animated: true)

    }

    internal func scrollViewDidScroll(_ scrollView: UIScrollView) {

        guard scrollView.width != 0 else{

            self.pageC.currentPage = 0

            return

        }

        let page = (scrollView.contentOffset.x / scrollView.width).ceil.int

           //指定当前页所展示的当前页面(滑动到一半位置,则显示下一页)

\


        if #available(iOS 14.0, *) {

\


            for i in 0..<pageC.numberOfPages {

                if i == page {

                    pageC.setIndicatorImage(  imageLiteral(resourceName: "selectedIndicator") , forPage: i)

                }else{

                    pageC.setIndicatorImage(  imageLiteral(resourceName: "defaultIndicator") , forPage: i)

                }

            }

        } else {

            // Fallback on earlier versions

        }

\


        //不能提前设置 当前Page,否则颜色不对

        pageC.currentPage = page

\


    }

}