3.iOS14下UIPageControl自定义样式
1.概览
首先在iOS14中UIPageControl中增加了几个新属性及方法:
/// 表示当前的背景样式,枚举值open var backgroundStyle: UIPageControl.BackgroundStyle/// 只读属性,表示当前处于离散互动还是连续互动open var interactionState: UIPageControl.InteractionState { get }/// 表示是否开始连续互动,默认trueopen var allowsContinuousInteraction: Bool/// 指示器样式统一调整,默认nil,样式为圆点open var preferredIndicatorImage: UIImage?/// 获取page处对应的图片,没有设置则为nilopen func indicatorImage(forPage page: Int) -> UIImage?/// 设置page处对应的图片open func setIndicatorImage(_ image: UIImage?, forPage page: Int)
同时废弃了一个方法和属性:
/// 设置该属性后,延缓更新指示器,直到调用updateCurrentPageDisplay为止open var defersCurrentPageDisplay: Bool/// 更新指示器open func updateCurrentPageDisplay()
2.部分新增属性及方法
2.1 preferredIndicatorImage
let control = UIPageControl()control.numberOfPages = 10control.frame = CGRect(x: 0, y: 300, width: 350, height: 30)control.pageIndicatorTintColor = .systemRedcontrol.currentPageIndicatorTintColor = .systemGreenif #available(iOS 14.0, *) { control.preferredIndicatorImage = UIImage(named:"heart")}self.view.addSubview(control)
preferredIndicatorImage可以将指示器图片替换成任意我们想要的图片
2.2 setIndicatorImage(UIImage?, forPage: Int)
可以设置任意page对应的图片,如果image为nil的话则显示圆点
let indicatorImages = ["summy", "cloudy", "rainy", "thunder"]if #available(iOS 14.0, *) { for (idx, imageName) in indicatorImages.enumerated() { control.setIndicatorImage(UIImage(named:imageName), forPage: idx) }}