如何更改 UIPageControl 点的边框?

val*_*ale 4 calayer uipagecontrol ios

更改颜色非常简单,但是否可以更改所有未选中点的边框?

前任:

dot.layer.borderWidth = 0.5 dot.layer.borderColor = UIColor.blackColor()

Kun*_*pta 5

是的 这可以做到.. 其实它很简单。

对于iOS 14 Apple 引入了很棒的自定义功能,您可以在其中设置自定义图像甚至设置背景

let pageControl = UIPageControl()
pageControl.numberOfPages = 5

pageControl.backgroundStyle = .prominent

pageControl.preferredIndicatorImage = UIImage(systemName: "bookmark.fill")

pageControl.setIndicatorImage(UIImage(systemName: "heart.fill"), forPage: 0)
Run Code Online (Sandbox Code Playgroud)

对于 iOS 14 之前的版本:-

Pagecontrol 由许多您可以访问的子视图组成。self.pageControl.subviews 返回您 [UIView] 即 UIView 的数组。获得单个视图后,您可以为其添加边框,更改其边框颜色,更改边框宽度,像缩放一样转换点的大小。可以使用 UIView 具有的所有这些属性。

                for index in 0..<array.count{ // your array.count
                
                let viewDot = weakSelf?.pageControl.subviews[index]
                viewDot?.layer.borderWidth = 0.5
                viewDot?.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
                
                if (index == indexPath.row){ // indexPath is the current indexPath of your selected cell or view in the collectionView i.e which needs to be highlighted
                    viewDot?.backgroundColor = UIColor.black
                    viewDot?.layer.borderColor = UIColor.black.cgColor
                }
                else{
                    viewDot?.backgroundColor = UIColor.white
                    viewDot?.layer.borderColor = UIColor.black.cgColor
                    
                }
            }
Run Code Online (Sandbox Code Playgroud)

它看起来像这样

在此处输入图片说明

请记住,您不需要设置 weakSelf?.pageControl.currentPage = indexPath.row。如果有任何问题,请告诉我。希望这能解决您的问题。

祝一切顺利