在UIPageViewController屏幕底部添加点

Him*_*shu 18 ios uipageviewcontroller swift

我已经实现了UIPageViewController的数据源方法,但仍然没有在我的iOS应用程序底部获得点.任何人都有任何解决方案,使我的应用程序上出现点?

Kli*_*akM 25

使用时UIPageViewController,默认情况下应该可见.我猜你有一个白色的背景,点也是白色的,所以你只是看不到它们.

尝试更改点颜色:

Swift 2.2:

var appearance = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self])
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)

Swift 3.0:

var appearance = UIPageControl.appearanceWhenContainedIn(UIPageViewController.self, nil)
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)

Swift 4.0:

var appearance = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self])
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)

如果它没有帮助,请确保您使用UIPageViewControllerTransitionStyleScroll过渡样式.

还要确保从UIPageViewControllerDataSource:presentationCount(for:)presentationIndex(for:).实现委托.

  • 乐意效劳 :) (2认同)

Eri*_*ner 24

对于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
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*osh 12

如果有人仍在搜索这类问题,我找到了一个关于添加页面点的好教程UIPageViewController.它至少对我有用.

http://www.seemuapps.com/page-view-controller-tutorial-with-page-dots

这是这个问题的相关部分:

确保您具有适当的委托和数据源

import UIKit

class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource
Run Code Online (Sandbox Code Playgroud)

要添加页面点指示,请添加pageControl,如下所示:

创建一个实例UIPageControl.

var pageControl = UIPageControl()
Run Code Online (Sandbox Code Playgroud)

现在添加以下功能.这将页面控件定位在屏幕的底部.当前页面指示将为黑色,其余指示将为白色.您可以更改这些以适合您的应用程序的设计.

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)
}
Run Code Online (Sandbox Code Playgroud)

现在viewDidLoad()添加以下两行:

self.delegate = self
configurePageControl()
Run Code Online (Sandbox Code Playgroud)

并添加以下功能,这将确保页面控制指示器在滚动时更改为正确的页面.

// 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)!
}
Run Code Online (Sandbox Code Playgroud)


Iyy*_*avi 6

使用presentationCountForPageViewControllerpresentationIndexForPageViewControllerdatasource方法然后显示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
  }
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

它为我工作,希望它有所帮助


Vah*_*hid 6

Swift 4和Swift 4.1

private func changeIndicatorColor() {
    let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [YourUIPageViewController.self])
    appearance.pageIndicatorTintColor = .lightGray
    appearance.currentPageIndicatorTintColor = .black
}
Run Code Online (Sandbox Code Playgroud)


小智 5

在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()
}
Run Code Online (Sandbox Code Playgroud)