tutorial page control ios objective-c uipageviewcontroller

ios - tutorial - Color de fondo del control de la página UIPageViewController



swift page control tutorial (7)

Actualizado para Swift 3 :

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() for view in self.view.subviews { if view is UIScrollView { view.frame = UIScreen.main.bounds } else if view is UIPageControl { view.backgroundColor = UIColor.clear } } }

Swift 2 ejemplo para cualquiera que lo necesite. Ponga esto dentro de su subclase UIPageController.

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() for view in self.view.subviews { if view is UIScrollView { view.frame = UIScreen.mainScreen().bounds } else if view is UIPageControl { view.backgroundColor = UIColor.clearColor() } } }

Estoy usando UIPageViewController en mi aplicación y está funcionando bien. sin embargo, el control de página que se ha agregado automáticamente tiene un fondo negro que oculta el material inferior del controlador de la vista actual (vea la imagen a continuación). ¿Es posible llamar al control de página de UIPageViewController y cambiar su color? Quiero que el control de la página se muestre a través del controlador de vista (por ejemplo, el tutorial de la aplicación Path), como configurar el color en lugar de negro para borrar.


Agregue el siguiente código en el UIPageViewController.

- (void)viewDidLoad { [super viewDidLoad]; [[UIPageControl appearance] setPageIndicatorTintColor: [UIColor grayColor]]; [[UIPageControl appearance] setCurrentPageIndicatorTintColor: [UIColor whiteColor]]; [[UIPageControl appearance] setBackgroundColor: [UIColor darkGrayColor]]; }


Aquí está la versión Swift 2 + de la respuesta de

//In AppDelegate let pageControl = UIPageControl.appearance() pageControl.pageIndicatorTintColor = UIColor.lightGrayColor() pageControl.currentPageIndicatorTintColor = UIColor.blackColor() pageControl.backgroundColor = UIColor.blueColor() //Or in your ViewController (Only available on IOS 9.0) if #available(iOS 9.0, *) { let pageControl = UIPageControl.appearanceWhenContainedInInstancesOfClasses([ViewController.self]) pageControl.pageIndicatorTintColor = UIColor.lightGrayColor() pageControl.currentPageIndicatorTintColor = UIColor.darkGrayColor() }


Aquí está la versión Swift 3+ de la Respuesta aceptada (con un plus de un Color personalizado creado):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { if #available(iOS 9.0, *) { let pageControl = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self]) pageControl.pageIndicatorTintColor = UIColor.init(colorLiteralRed: 43/255.0, green: 170/255.0, blue: 226/255.0, alpha: 0.4) pageControl.currentPageIndicatorTintColor = UIColor.init(colorLiteralRed: 43/255.0, green: 170/255.0, blue: 226/255.0, alpha: 1.0) } return true }


Reemplace la función viewDidLayoutSubviews() en PageViewController:

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() for view in view.subviews{ if view is UIScrollView{ view.frame = UIScreen.main.bounds }else if view is UIPageControl{ view.backgroundColor = UIColor.clear } } }


Solo subclase UIPageViewController y agregue este código:

- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; for (UIView *view in self.view.subviews) { if ([view isKindOfClass:[NSClassFromString(@"_UIQueuingScrollView") class]]) { CGRect frame = view.frame; frame.size.height = view.superview.frame.size.height; view.frame = frame; } } }

Esto ampliará el marco de la vista de desplazamiento interno.


Puede usar la appearance para cambiar el color de UIPageControl, ya que de lo contrario no estará accesible. Intenta hacerlo en la función didFinishLaunchingWithOptions tu AppDelegate como se indica a continuación.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIPageControl *pageControl = [UIPageControl appearance]; pageControl.pageIndicatorTintColor = [UIColor lightGrayColor]; pageControl.currentPageIndicatorTintColor = [UIColor blackColor]; pageControl.backgroundColor = [UIColor blueColor]; return YES; }

Para aplicar el estilo solo a un controlador de vista en particular, puede usar appearanceWhenContainedIn como sigue:

UIPageControl *pageControl = [UIPageControl appearanceWhenContainedIn:[MyViewController class], nil];

Solo los objetos UIPageControl contenidos en MyViewController obtendrán este estilo.

EDITAR: El fondo negro alrededor de UIPageControl en la parte inferior de su pantalla se debe al color de fondo de su UIPageViewController no a UIPageControl . Puedes cambiar este color de la siguiente manera:

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blueColor]; //Set it to whatever you like }