设置 currentPageIndicatorTintColor 的错误

Bug with setting currentPageIndicatorTintColor

我有带有 scrollview 和 pageContoll 的自定义视图。

let backScrollView = NSBundle.mainBundle().loadNibNamed("BackScrollView", owner: self, options: nil)[0] as! BackScrollView

我尝试设置 currentPageIndicatorTintColor

if brightnes > 200
{
   backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
}
else
{
   backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
}

我 运行 这个代码在 iPhone 5S (iOS 9.2),并且代码工作没有问题,但是当我 运行 这个代码在 iPhone 5 (iOS 8.4) 我变成了错误:

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 4294967295 beyond bounds for empty array'

我知道错误在这行代码

backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()

I是用print计算出来的

我做错了什么?

最可能的原因是您的页面控件 numberOfPages 等于 0,或者 currentPage 无效(等于 -1)。

你能试试下面的方法吗

let pageControl = backScrollView.pageControl

if (pageControl.numberOfPages > 0 && pageControl.currentPage >= 0 && pageControl.currentPage < pageControl.numberOfPages) {
    if brightnes > 200 {
        pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
    } else {
        pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
    }
} else {
    print("Invalid pageControl state : numberOfPages = \(pageControl.numberOfPages); currentPage = \(pageControl.currentPage)")
}