이 방법은 저에게 효과적입니다. 사용자 정의 pageControl 클래스를 만들고 점에 대한 이미지를 모든 사용자 정의 이미지로 변경합니다.
아래 코드에서 모든 사용자 정의 이미지로 pageControl의 첫 번째 점에 대한 이미지를 변경했습니다.
귀하의 필요에 따라 updateDots() 방법을 변경할 수 있습니다.
희망이 있습니다. !!!
override func viewDidLoad() {
super.viewDidLoad()
let pageControl = CustomPageControl(frame: CGRect(x: 100, y: 100, width: 104, height: 40))
pageControl.numberOfPages = 5
pageControl.currentPage = 0
self.view.addSubview(pageControl)
}
class CustomPageControl: UIPageControl {
var imageToBeReplacedByDot: UIImage {
return // Image you want to replace with dots
}
var circleImage: UIImage {
return //Default Image
}
override var numberOfPages: Int {
didSet {
updateDots()
}
}
override var currentPage: Int {
didSet {
updateDots()
}
}
override func awakeFromNib() {
super.awakeFromNib()
self.pageIndicatorTintColor = UIColor.clear
self.currentPageIndicatorTintColor = UIColor.clear
self.clipsToBounds = false
}
func updateDots() {
var i = 0
for view in self.subviews {
var imageView = self.imageView(forSubview: view)
if imageView == nil {
if i == 0 {
imageView = UIImageView(image: imageToBeReplacedByDot)
} else {
imageView = UIImageView(image: circleImage)
}
imageView!.center = view.center
view.addSubview(imageView!)
view.clipsToBounds = false
}
if i == self.currentPage {
imageView!.alpha = 1.0
} else {
imageView!.alpha = 0.5
}
i += 1
}
}
fileprivate func imageView(forSubview view: UIView) -> UIImageView? {
var dot: UIImageView?
if let dotImageView = view as? UIImageView {
dot = dotImageView
} else {
for foundView in view.subviews {
if let imageView = foundView as? UIImageView {
dot = imageView
break
}
}
}
return dot
}
}
[도트 이미지 지정 UIPageControl]의
가능한 복제 (https://stackoverflow.com/questions/38869171/custom-uipagecontrol-with-dot-images) – raki