如何使用每页不同的颜色更改 UIPageControl 中分页点的颜色
How to change the color of pagination dots in UIPageControl with a different color per page
我将 UIPageControl 与 UIScrollView 结合使用来显示 5 个图像。我希望能够将当前页面指示器点颜色设置为每个页面的不同颜色(当它被选中时)。我已经尝试在 UIPageControl 的“值更改”操作中设置 currentPageIndicatorTintColor,但这会在更改为新颜色之前短暂显示以前的颜色。
有谁知道是否可以为每个点使用不同的颜色,这样显示就显得很无缝了?
注意:这不是 How can i change the color of pagination dots of UIPageControl? 的副本,因为该问题是关于将所有点更改为具有相同颜色,而我想将各个页面点更改为具有不同颜色,因为它们的页面当前正在显示。
currentPageIndicatorTintColor 会起作用。
您可能需要在这里实际做一些工作。
func scrollViewDidScroll(scrollView: UIScrollView) {
//If the page is over 50% scrolled change the dot to the new value.
//If it is less, change it back if the user is holding the page.
}
我的建议是监听滚动视图,抢占页面,而不是等待事实发生。我的伪代码保持抽象,但如果这还不够,如果您提供示例,我可以根据您的代码更具体地修改答案。
因此您必须是 UIScrollViewDelegate
您可以这样做:
第 1 步: 子类 UIPageControl
并添加一个 属性 dotImages
来保存所有点的图像。
class MyPageControl : UIPageControl {
var dotImages : [UIImage?] = []
第 2 步: 初始化您的 dotImages
required init(coder: NSCoder) {
super.init(coder: coder)!
let firstDotImage = UIImage.init(named: "dot1.png")
let secondDotImage = UIImage.init(named: "dot2.png")
let thirdDotImage = UIImage.init(named: "dot3.png")
let fourthDotImage = UIImage.init(named: "dot4.png")
let fifthDotImage = UIImage.init(named: "dot5.png")
dotImages = [firstDotImage, secondDotImage, thirdDotImage, fourthDotImage, fifthDotImage]
}
第 3 步:实现 updateDots
函数来设置自己的图像
func updateDots () {
for var index = 0; index < self.subviews.count; index++ {
let dot = self.subviews[index] as! UIImageView
dot.image = self.dotImages[index]
}
}
第 4 步: 根据您的应用需要调用 updateDots
函数。您最初可以在加载视图时调用它,也可以在更改页面时调用它。
我将 UIPageControl 与 UIScrollView 结合使用来显示 5 个图像。我希望能够将当前页面指示器点颜色设置为每个页面的不同颜色(当它被选中时)。我已经尝试在 UIPageControl 的“值更改”操作中设置 currentPageIndicatorTintColor,但这会在更改为新颜色之前短暂显示以前的颜色。
有谁知道是否可以为每个点使用不同的颜色,这样显示就显得很无缝了?
注意:这不是 How can i change the color of pagination dots of UIPageControl? 的副本,因为该问题是关于将所有点更改为具有相同颜色,而我想将各个页面点更改为具有不同颜色,因为它们的页面当前正在显示。
currentPageIndicatorTintColor 会起作用。 您可能需要在这里实际做一些工作。
func scrollViewDidScroll(scrollView: UIScrollView) {
//If the page is over 50% scrolled change the dot to the new value.
//If it is less, change it back if the user is holding the page.
}
我的建议是监听滚动视图,抢占页面,而不是等待事实发生。我的伪代码保持抽象,但如果这还不够,如果您提供示例,我可以根据您的代码更具体地修改答案。
因此您必须是 UIScrollViewDelegate
您可以这样做:
第 1 步: 子类 UIPageControl
并添加一个 属性 dotImages
来保存所有点的图像。
class MyPageControl : UIPageControl {
var dotImages : [UIImage?] = []
第 2 步: 初始化您的 dotImages
required init(coder: NSCoder) {
super.init(coder: coder)!
let firstDotImage = UIImage.init(named: "dot1.png")
let secondDotImage = UIImage.init(named: "dot2.png")
let thirdDotImage = UIImage.init(named: "dot3.png")
let fourthDotImage = UIImage.init(named: "dot4.png")
let fifthDotImage = UIImage.init(named: "dot5.png")
dotImages = [firstDotImage, secondDotImage, thirdDotImage, fourthDotImage, fifthDotImage]
}
第 3 步:实现 updateDots
函数来设置自己的图像
func updateDots () {
for var index = 0; index < self.subviews.count; index++ {
let dot = self.subviews[index] as! UIImageView
dot.image = self.dotImages[index]
}
}
第 4 步: 根据您的应用需要调用 updateDots
函数。您最初可以在加载视图时调用它,也可以在更改页面时调用它。