Добавление точек в нижней части экрана UIPageViewController
я реализовал методы источника данных UIPageViewController и все еще не получаю точки внизу моего приложения iOS. У кого-нибудь есть решение, чтобы точки появились в моем приложении?
6 ответов
при использовании UIPageViewController
точки должны быть видны по умолчанию. Я думаю, у вас есть белый фон, и точки тоже белые, поэтому вы их просто не видите.
попробуйте изменить цвет точек:
Swift 2.2:
var appearance = UIPageControl.appearanceWhenContainedIn(UIPageViewController.self, nil)
appearance.pageIndicatorTintColor = UIColor.redColor()
appearance.currentPageIndicatorTintColor = UIColor.redColor()
Swift 3.0:
var appearance = UIPageControl.appearanceWhenContainedIn(UIPageViewController.self, nil)
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red
если это не поможет, пожалуйста, убедитесь, что вы используете UIPageViewControllerTransitionStyleScroll
стиль перехода.
для Swift 3.0, вам нужно:
private func setupPageControl() {
let appearance = UIPageControl.appearance()
appearance.pageIndicatorTintColor = UIColor.gray
appearance.currentPageIndicatorTintColor = UIColor.white
appearance.backgroundColor = UIColor.darkGray
}
func presentationCount(for pageViewController: UIPageViewController) -> Int {
setupPageControl()
return self.images.count
}
func presentationIndex(for pageViewController: UIPageViewController) -> Int {
return 0
}
если кто-то все еще ищет этот вопрос, я нашел хороший учебник о добавлении точек страницы в ваш UIPageViewController
. По крайней мере, у меня получилось.
http://www.seemuapps.com/page-view-controller-tutorial-with-page-dots
это соответствующая часть для этого вопроса:
убедитесь, что у вас есть соответствующий делегат и dataSource
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource
чтобы добавить точечные указания страницы, добавьте pageControl как следует:
создать экземпляр UIPageControl
.
var pageControl = UIPageControl()
теперь добавьте следующую функцию. Это позволит расположить элемент управления page в нижней части экрана. Текущая индикация страницы будет черной, а остальные индикаторы-белыми. Вы можете изменить их в соответствии с дизайном вашего приложения.
func configurePageControl() {
pageControl = UIPageControl(frame: CGRect(x: 0,y: UIScreen.main.bounds.maxY - 50,width: UIScreen.main.bounds.width,height: 50))
self.pageControl.numberOfPages = orderedViewControllers.count
self.pageControl.currentPage = 0
self.pageControl.alpha = 0.5
self.pageControl.tintColor = UIColor.black
self.pageControl.pageIndicatorTintColor = UIColor.white
self.pageControl.currentPageIndicatorTintColor = UIColor.black
self.view.addSubview(pageControl)
}
сейчас viewDidLoad()
добавить эти две строчки:
self.delegate = self
configurePageControl()
и добавьте следующую функцию, это убеждается индикатор управлением страницы изменения на нужной странице по мере прокрутки.
// MARK: Delegate functions
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
let pageContentViewController = pageViewController.viewControllers![0]
self.pageControl.currentPage = orderedViewControllers.index(of: pageContentViewController)!
}
Swift 4 и Swift 4.1
private func changeIndicatorColor() {
let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [YourUIPageViewController.self])
appearance.pageIndicatorTintColor = .lightGray
appearance.currentPageIndicatorTintColor = .black
}
при использовании шаблона приложения на основе страницы в Xcode 7 при вставке в класс ModelController работает следующий код:
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
setupPageControl()
return self.pageData.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
private func setupPageControl() {
let appearance = UIPageControl.appearance()
appearance.pageIndicatorTintColor = UIColor.grayColor()
appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
appearance.backgroundColor = UIColor.darkGrayColor()
}
использовать presentationCountForPageViewController
и presentationIndexForPageViewController
методы источника данных затем показывают точки UIPageViewController,
swift код:
private func setupPageControl() {
let appearance = UIPageControl.appearance()
appearance.pageIndicatorTintColor = UIColor.grayColor()
appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
appearance.backgroundColor = UIColor.darkGrayColor()
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
{
setupPageControl()
return self.arrimg.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
{
return 0
}
код objective-C:
- (void) setupPageControl
{
[[UIPageControl appearance] setPageIndicatorTintColor: [UIColor lightGrayColor]];
[[UIPageControl appearance] setCurrentPageIndicatorTintColor: [UIColor blackColor]];
[[UIPageControl appearance] setTintColor: [UIColor blackColor]];
}
- (NSInteger) presentationCountForPageViewController: (UIPageViewController *) pageViewController
{
[self setupPageControl];
return [arrimg count];
}
- (NSInteger) presentationIndexForPageViewController: (UIPageViewController *) pageViewController
{
return 0;
}
его работа для меня, надеюсь, его полезно