web-dev-qa-db-ja.com

ドットの色に関するUIPageViewController独自のPageControllerの変更

ねえ、私はUIPageViewControllerを使用して、現在のページとスクロールを制御しています。次の2つの関数を追加するだけで、ページコントローラーを一緒に表示できることを知っています。

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController

私が知りたいのは、ページコントローラーの色を変更して、使用している背景のドットがより見やすくなるかどうかです。

通常のページコントローラーには次のプロパティがあることを知っています。

@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor
@property(nonatomic,retain) UIColor *pageIndicatorTintColor

ただし、UIPageViewControllerからこれらのプロパティまたはページコントローラーにアクセスする方法を一生理解することはできません。

誰かが一般的なプロパティを変更する方法を言っただけなら、それは役に立つかもしれませんか?

21
Lightbarrier

UIAppearanceを使用して、UIPageControlの色を構成できます。これは、UIPageViewControllersのUIPageControlsにも当てはまります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  UIPageControl *pageControl = [UIPageControl appearance];
  pageControl.pageIndicatorTintColor = [UIColor whiteColor];
  pageControl.currentPageIndicatorTintColor = [UIColor redColor];
}
57
Pasi Heikkinen

特定のUIPageViewControllerのUIPageControlの色を変更する場合は、次を使用できます。

In Swift

let pageControl: UIPageControl = UIPageControl.appearance(whenContainedInInstancesOf: [MyPageViewController.self])
pageControl.pageIndicatorTintColor = UIColor.green
// ... any other changes to pageControl
14
Hellojeffy

UIPageControlUIAppearanceプロトコルに準拠しています。 Apple Developper APIリファレンスUIAppearanceについて述べています:

UIAppearanceプロトコルを使用して、クラスの外観プロキシを取得します。クラスの外観プロキシに外観変更メッセージを送信することにより、クラスのインスタンスの外観をカスタマイズできます。


したがって、Swift 2.2を使用して、UIPageControlpageIndicatorTintColorcurrentPageIndicatorTintColorUINavigationControllerのサブクラスまたはAppDelegateクラス(よりグローバルなアプローチの場合)。

CustomNavigationController.Swift:

class CustomNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set pageIndicatorTintColor and currentPageIndicatorTintColor
        // only for the following stack of UIViewControllers
        let pageControl = UIPageControl.appearance()
        pageControl.pageIndicatorTintColor = UIColor.blueColor()
        pageControl.currentPageIndicatorTintColor = UIColor.greenColor()
    }

}

AppDelegate.Swift:

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Set pageIndicatorTintColor and currentPageIndicatorTintColor globally
        let pageControl = UIPageControl.appearance()
        pageControl.pageIndicatorTintColor = UIColor.blueColor()
        pageControl.currentPageIndicatorTintColor = UIColor.greenColor()

        return true
    }

}
3
Imanou Petit