Swift/iOS8:为什么页面控制指示器不显示?

lf3rwulv  于 2023-02-17  发布在  iOS
关注(0)|答案(6)|浏览(133)

我正在实现一个简单的图库视图控制器,应用程序会显示一小部分全屏图像,用户可以滚动浏览。我正在使用UIPageViewController,我认为如果我实现了正确的数据源函数,它应该会自动显示页面控件指示器。但是我仍然看不到任何指示器。
在我的主GalleryViewController中:

class GalleryViewController: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {

var pageController: UIPageViewController?
var pageContent = NSArray()

override func viewDidLoad() {
super.viewDidLoad()
.... some code to load images into the pageContent array ....

pageController = UIPageViewController(transitionStyle:.Scroll, navigationOrientation:.Horizontal,options:nil) 
pageController?.delegate = self
pageController?.dataSource = self

... some more standard code to add the page controller to self.view etc.

var pageControl = UIPageControl.appearance()
pageControl.pageIndicatorTintColor = UIColor.lightGray()
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
pageControl.backgroundColor = UIColor.blackColor()

pageController!.didMoveToParentViewController(self)
}

func viewControllerAtIndex(index:Int) -> ContentViewController? {
....
}

我已经实现了两个强制协议方法viewControllerBeforeViewController和viewControllerAfterController,以及分页所需的两个方法presentationCountForPagesViewController和presentationIndexForPageViewController。
我的X11 M1 N1 X有一个X11 M2 N1 X,它填满了整个屏幕。但是,即使我把它的大小从屏幕底部减小,我看不到任何页面指示灯。我错过了什么吗?让我知道如果我没有提供足够的信息。我一直在尝试重写我的旧应用程序,我用Objective-C编码超过5年前-完全在Swift为iOS8和Xcode等已经改变了这么多,这是混乱的。谢谢!

js4nwp54

js4nwp541#

取自here
为了显示UIPageControl,需要实现两个可选的数据源方法,只需要返回presentationCountForPageViewController的整数页数和presentationIndexForPageViewController的初始选择索引即可

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    return pageContent.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return 0
}
uujelgoq

uujelgoq2#

为什么不使用**swift 3+版本的策尔B.**答案

func presentationCount(for pageViewController: UIPageViewController) -> Int {
        return self.providerItemList?.providerItems?.count ?? 0
    }

    func presentationIndex(for pageViewController: UIPageViewController) -> Int {
        return 0
    }
k5hmc34c

k5hmc34c3#

即使您更改了UIPageControl的颜色,它也可能不会出现。如果UIPageController位于UITabBarController内部,则TabBar将覆盖UIPageControl。找到它的最佳方法是使用选项调试-〉查看调试-〉CaptureViewHierarchy。然后在左下角的筛选字段中键入“pageControl”。如果您在导航器中单击它,它应该会在屏幕上找到它(请查看屏幕截图)

可以按如下方式更改位置:

let controlHeight: CGFloat = 50
    let bottomSpace: CGFloat = 20
    let yPosition = view.frame.size.height - (controlHeight + bottomSpace)
    let fullScreenWidth = view.frame.size.width
    let frame = CGRect(x: 0, y: yPosition, width: fullScreenWidth, height: controlHeight)

    pageControl.frame = frame
ruoxqz4g

ruoxqz4g4#

虽然在许多这些答案中出现了大量的答案,但我只想明确地说明,在这些方法被命中之前,您需要将UIPageViewController设置为“Scroll”。

b1zrtrql

b1zrtrql5#

圆点为白色或半透明白色。请确保背景不是白色,或更改圆点的颜色。
如何编辑点的颜色:How can I change the color of pagination dots of UIPageControl?

31moq8wy

31moq8wy6#

我的错误是在presentationCount()委托方法中设置的计数值大于页面视图控制器中的实际内容页面。

相关问题