如何用每页不同的颜色更改 UIPageControl 中分页点的颜色

Posted

技术标签:

【中文标题】如何用每页不同的颜色更改 UIPageControl 中分页点的颜色【英文标题】:How to change the color of pagination dots in UIPageControl with a different color per page 【发布时间】:2015-10-09 05:16:00 【问题描述】:

我将 UIPageControl 与 UIScrollView 结合使用来显示 5 张图像。我希望能够为每个页面将当前页面指示点颜色设置为不同的颜色(当它被选中时)。我尝试在 UIPageControl 的 Value Changed 操作中设置 currentPageIndicatorTintColor ,但这会在更改为新颜色之前短暂显示以前的颜色。

有谁知道是否可以为每个点使用不同的颜色,以使显示无缝?

注意:这不是 How can i change the color of pagination dots of UIPageControl? 的重复,因为这个问题是关于将所有点更改为具有相同颜色的,而我想在页面当前显示时将单个页面点更改为具有不同颜色。

【问题讨论】:

【参考方案1】:

你可以这样做:

第 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]

第三步:实现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 函数。您可以在视图加载时调用它,也可以在页面更改时调用它。

【讨论】:

【参考方案2】:

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

【讨论】:

在 scrollViewDidScroll 函数中更改 currentPageIndicatorTintColor(当滚动导致当前页面发生变化时)效果很好。非常感谢

以上是关于如何用每页不同的颜色更改 UIPageControl 中分页点的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何用css更改tab键选择颜色? [复制]

如何用js更改tr的背景颜色 新手求助

如何用matlab来更改登记照的背景颜色

如何用美图秀秀更改照片背景颜色

delphi 如何用reportbuilder 打印每页的小计

如何用不同颜色为图像中的对象着色