25

こんにちは、UIPageViewController を使用して、現在のページを制御し、スクロールしています。次の 2 つの関数を追加するだけで、Page Controller を一緒に表示できることがわかりました。

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController

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

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

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

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

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

4

3 に答える 3

17

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

スウィフト3では

let pageControl: UIPageControl = UIPageControl.appearance(whenContainedInInstancesOf: [MyPageViewController.self])
pageControl.pageIndicatorTintColor = UIColor.green
// ... any other changes to pageControl
于 2016-10-11T18:25:14.943 に答える
4

UIPageControlUIAppearanceプロトコルに準拠しています。Apple Developer API Reference には、次のことが記載されていUIAppearanceます。

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


したがって、Swift 2.2 を使用すると、UIPageControlpageIndicatorTintColorandcurrentPageIndicatorTintColorをクラスのサブクラスUINavigationControllerまたは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
    }

}
于 2016-09-27T16:18:54.903 に答える