好吧,我在这里苦苦挣扎,无法找到有效的解决方案。我一直在自学 Swift,没有 Objective C 经验(我知道,我知道)。
在我的应用程序中,我有我的主要UIViewController
,一个透明但从屏幕底部滑入的子视图,然后滑动子视图的4个子视图都是工作的UIScrollView。我启用了分页并且效果很好,但我想为每个页面添加一个 UIPageControl。我真的无法理解代表以及如何快速实现。任何帮助将非常感激!
另外,我都是以编程方式完成这一切,所以请不要 IB。如果有帮助的话,很乐意提供代码。谢谢
我认为您和/或任何其他正在寻找如何做到这一点的人都会发现这个答案 https://stackoverflow.com/questions/29074454/how-to-create-a-scroll-view-with-a-page-control-using-swift.有帮助。该代码示例使我能够在滚动视图上创建页面控制指示器,这是第一次尝试执行此操作。我发现它非常清楚。
您可能需要添加到项目中的行是:
1: add UIScrollViewDelegate
当您第一次命名视图控制器类时作为协议。
2:在类声明中创建一个pageControl变量。您需要调整帧编号才能使其出现在您想要的位置。当前的数字对我来说是窗口中间的一个。
作为参考,数字平均值(指示器左上角的 x 位置、左上角的 y 坐标、页面指示器的宽度、页面指示器的高度)
var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(50, 300, 200, 20))
-
在viewDidLoad中设置scrollView委托并调用`configurePageControl():
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
configurePageControl()
}
-
您需要在viewDidLoad之后添加两个方法。一个是在viewDidLoad中调用的
func configurePageControl() {
self.pageControl.numberOfPages = <some reference to the number of pages>
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.redColor()
self.pageControl.pageIndicatorTintColor = UIColor.blackColor()
self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor()
self.view.addSubview(pageControl)
}
and
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
pageControl.currentPage = Int(pageNumber)
}
实际上,scrollView 委托的设置非常简单。添加 UIScollViewDelegate 作为 ViewController 类将实现的协议,方法是在类声明之后添加它:class YourClassName: UIScrollViewDelegate
。然后在 viewDidLoad() 中,通过使用以下行将滚动视图的委托属性分配给您的类来完成委托设置scrollView.delegate = self
。 (如果您需要进一步说明这些命令的去向,请再次参阅我链接的示例)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)