我已经创建了一个滚动的 pageviewcontroller,但我无法让点/条显示出来。据我了解,只要 Navigation 设置为 Horizontal 且 Transition style 设置为 Scroll,这应该默认存在,但没有任何显示。
然后我添加了一些额外的代码来添加和设置点的样式,但仍然没有。这是我现在的代码:
import UIKit
class Swipable_Images: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate{
var pages = [UIViewController]()
var pageControl = UIPageControl()
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
self.dataSource = self
configurePageControl()
let p1: UIViewController! = storyboard?.instantiateViewController(withIdentifier: "stop1_image1")
let p2: UIViewController! = storyboard?.instantiateViewController(withIdentifier: "stop1_image2")
pages.append(p1)
pages.append(p2)
setViewControllers([p1], direction: UIPageViewController.NavigationDirection.forward, animated: false, completion: nil)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController)->UIViewController?{
let cur = pages.index(of: viewController)!
let prev = abs((cur - 1) % pages.count)
return pages[prev]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController)->UIViewController?{
let cur = pages.index(of: viewController)!
let nxt = abs((cur+1) % pages.count)
return pages[nxt]
}
func presentationIndex(for pageViewController: UIPageViewController) -> Int {
return pages.count
}
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool){
let pageContentViewController = pageViewController.viewControllers![0]
self.pageControl.currentPage = pages.index(of: pageContentViewController)!
}
//Swipe Indicator Bar
func configurePageControl(){
pageControl = UIPageControl(frame: CGRect(x: self.view.center.x, y: self.view.center.y, width: UIScreen.main.bounds.width, height: 50))
self.pageControl.numberOfPages = pages.count
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.black
self.pageControl.pageIndicatorTintColor = UIColor.white
self.pageControl.currentPageIndicatorTintColor = UIColor.black
self.view.addSubview(pageControl)
}
}
我什至创建了一个新的空白页面 View Controller 来测试,完全没有代码。我只是将 Navigation 设置为 Horizontal 并将 Transition 设置为 Scroll,仅此而已。没有代码或大惊小怪。我使用用户定义的运行时属性将背景颜色设置为随机蓝色,这样我就可以看到导航/点栏(如果它在那里),但我仍然一无所获。
我错过了什么?
最佳答案
From my understanding, this should be present by default as long as Navigation is set to Horizontal and Transition style is set to Scroll, but nothing is showing.
你的理解是错误的。
不要添加页面控件。它是内置的。如果您实现这两个方法,它将显示出来:
func presentationCount(for pvc: UIPageViewController) -> Int {
func presentationIndex(for pvc: UIPageViewController) -> Int {
不幸的是,内置的页面控制点是白色的,这使得它们很难被看到。使用 UIAppearance 代理来解决这个问题(通常在 applicationDidFinishLaunching
中)。例如:
let proxy = UIPageControl.appearance()
proxy.pageIndicatorTintColor = UIColor.red.withAlphaComponent(0.6)
proxy.currentPageIndicatorTintColor = .red
proxy.backgroundColor = .yellow
至少这样你会看到页面控件存在并且可以修改细节以适应。
关于ios - 页面 View Controller 不显示点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835530/