iOS14.0適配,記錄!spa
適配UIPageControl
- 出現的問題:
iOS14
之後刪除了pageImage
與currentPageImage
,不能再經過KVC
修改控制器的圖片。 - 解決方案:
藉助iOS14
新增字段preferredIndicatorImage
,咱們能夠修改指示器小圓點的大小以及形狀,藉助currentPageIndicatorTintColor
與pageIndicatorTintColor
來確認不一樣狀態下小圓點的顏色。
最終展現的顏色是由TintColor
以及preferredIndicatorImage
共同決定的,所以這裏將preferredIndicatorImage
設置爲白色。 - 部分代碼示例:::
UIPageControl *pageControl = [[UIPageControl alloc]init]; pageControl.backgroundColor = [UIColor clearColor]; pageControl.numberOfPages = 1; if (@available(iOS 14.0,*)) { pageControl.preferredIndicatorImage = [self imageWithColor:[UIColor whiteColor]]; pageControl.currentPageIndicatorTintColor = [UIColor redColor]; pageControl.pageIndicatorTintColor = [UIColor blueColor]; }else{ [pageControl setValue:[UIImage imageNamed:@"pageControllDot"]forKeyPath:@"pageImage"]; [pageControl setValue:[UIImage imageNamed:@"pageControllCurrent"]forKeyPath:@"currentPageImage"]; } // 繪製小圓點的形狀 - (UIImage *)imageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0.0f, 12.f, 2.f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }