2017-11-14 1 views
0

UIPageControl 점에 대한 이미지를 설정하려고합니다.사용자 정의 PageControl image - Swift

이미지가 필요한 대신 기본 도트를 변경해야합니다. 나는 그것이 기본 점으로 중복되고, Pagecontrol의 이미지를 설정 할 수도 있지만 아래의 코드

self.pageCtrl.currentPageIndicatorTintColor = UIColor.init(patternImage: UIImage(named: "Page Indicator_Selected")!) 
self.pageCtrl.pageIndicatorTintColor = UIColor.init(patternImage: UIImage(named: "Page Indicator_Normal")!) 

을 사용했다.

+0

가능한 복제 (https://stackoverflow.com/questions/38869171/custom-uipagecontrol-with-dot-images) – raki

답변

0

이 방법은 저에게 효과적입니다. 사용자 정의 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]의
관련 문제