Jam*_*esG 2 uiscrollview uipagecontrol ios swift
我似乎遇到了一些使UIPageControl工作的问题.
我有一个ViewController,它包含一个ScrollView.此ScrollView加载可以刷过的nib文件.见图:
以下是加载这些代码的代码:
self.addChildViewController(vc0)
self.displayReportView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
var frame1 = vc1.view.frame
frame1.origin.x = self.view.frame.size.width
vc1.view.frame = frame1
self.addChildViewController(vc1)
self.displayReportView.addSubview(vc1.view)
vc1.didMoveToParentViewController(self)
// And so on
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为他们正确滚动等.
现在,在ViewController(一个持有scrollview)上我添加了委托:
UIScrollViewDelegate
Run Code Online (Sandbox Code Playgroud)
创建了一些变量:
var frame: CGRect = CGRectMake(0, 0, 0, 0)
var colors:[UIColor] = [UIColor.redColor(), UIColor.blueColor(), UIColor.greenColor(), UIColor.yellowColor()]
var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(50, 300, 200, 20))
Run Code Online (Sandbox Code Playgroud)
我添加了一些所需的功能:
func configurePageControl() {
// The total number of pages that are available is based on how many available colors we have.
self.pageControl.numberOfPages = 4
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.redColor()
self.pageControl.pageIndicatorTintColor = UIColor.blackColor()
self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor()
self.view.addSubview(pageControl)
}
// MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL
func changePage(sender: AnyObject) -> () {
let x = CGFloat(pageControl.currentPage) * displayReportView.frame.size.width
displayReportView.setContentOffset(CGPointMake(x, 0), animated: true)
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
pageControl.currentPage = Int(pageNumber)
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行应用程序时,滚动视图点显示,但是当我滑动时,它们不会更新.
如何更新点以反映显示的视图?
如果您需要我的代码中的任何其他内容来查看功能,请告诉我们.
如果你有一个分页滚动视图,你当然可以做你正在描述的内容; 我有一个使用此代码的示例:
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let x = scrollView.contentOffset.x
let w = scrollView.bounds.size.width
pageControl.currentPage = Int(x/w)
}
Run Code Online (Sandbox Code Playgroud)
除了你之外,你round的代码看起来很多,这让我认为你的代码应该可行.这让我觉得别的东西只是配置错误.这是一个分页滚动视图吗?您还记得将此对象设为滚动视图delegate吗?使用日志记录或断点确保您的scrollViewDidEndDecelerating名字首先被调用.
但是,我想指出的是,您正在描述的配置实际上是UIPageViewController免费提供的 - 带有视图控制器视图的滚动视图以及页面控件 - 因此您可能希望使用它.
| 归档时间: |
|
| 查看次数: |
6553 次 |
| 最近记录: |