Как я могу изменить цвет точек разбивки на страницы UIPageControl? - PullRequest
176 голосов
/ 31 мая 2010

Я занимаюсь разработкой приложения, в котором я хочу изменить либо цвет, либо изображение UIPageControl точек разбивки на страницы. Как я могу это изменить? Можно ли настроить UIpageControl по вышеуказанному сценарию?

Ответы [ 18 ]

4 голосов
/ 05 сентября 2015

С Swift 1.2 это просто:

UIPageControl.appearance().pageIndicatorTintColor           = UIColor.lightGrayColor()
UIPageControl.appearance().currentPageIndicatorTintColor    = UIColor.redColor()
3 голосов
/ 03 февраля 2014

Это работает для меня в iOS 7.

pageControl.pageIndicatorTintColor = [UIColor purpleColor];
pageControl.currentPageIndicatorTintColor = [UIColor magentaColor];
2 голосов
/ 06 декабря 2011

Вы также можете использовать библиотеку Three20, которая содержит стилизованный PageControl и десятки других полезных элементов управления и абстракций интерфейса пользователя.

2 голосов
/ 01 августа 2011

@ Jasarien Я думаю, что вы можете создать подкласс UIPageControll, строка выбирается только из Apple Doc. «Подклассы, которые настраивают внешний вид элемента управления страницы, могут использовать этот метод для изменения размера элемента управления страницы при изменении количества страниц» для метода sizeForNumberOfPages:

2 голосов
/ 31 мая 2010

Невозможно использовать iPhone SDK с официальной точки зрения. Возможно, вы сможете сделать это с помощью приватных методов, но это будет препятствием для доступа в магазин приложений.

Единственное другое безопасное решение - создать собственный элемент управления страницей, который не должен быть слишком сложным, учитывая, что элемент управления страницей просто отображает, какая страница отображается в режиме прокрутки.

1 голос
/ 12 января 2016

В случае Swift 2.0 и выше будет работать следующий код:

pageControl.pageIndicatorTintColor = UIColor.whiteColor()
pageControl.currentPageIndicatorTintColor = UIColor.redColor()
0 голосов
/ 02 декабря 2016

Вот решение Swift 3.0 ... вы знаете, если вы согласны с принятым риском: «Изменение подпредставлений существующего элемента управления хрупко».

Вы должны будете вызвать updateDots () в вашем viewDidAppear () и обработчике valueChanged для элемента управления страницы.

 import UIKit

 class CustomImagePageControl: UIPageControl {

   let activeImage:UIImage = UIImage(named: "SelectedPage")!
   let inactiveImage:UIImage = UIImage(named: "UnselectedPage")!

   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 {
             if let imageView = self.imageForSubview(view) {
                 if i == self.currentPage {
                     imageView.image = self.activeImage
                 } else {
                     imageView.image = self.inactiveImage
                 }
                 i = i + 1
             } else {
                 var dotImage = self.inactiveImage
                 if i == self.currentPage {
                     dotImage = self.activeImage
                 }
                 view.clipsToBounds = false
                 view.addSubview(UIImageView(image:dotImage))
                 i = i + 1
             }
         }
     }

     fileprivate func imageForSubview(_ 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
     }
 }
0 голосов
/ 28 сентября 2013
myView.superview.tintColor = [UIColor colorWithRed:1.0f  
                                      green:1.0f blue:1.0f alpha:1.0f];
...