HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 带点图像的自定义UIPageControl大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我需要定制我的UIPageControl时,我使用了 thisthis解决方案.

稍微修改它为新版本的swift我们有:

class myPageControl: UIPageControl {
    var activeImage: UIImage!
    var inactiveImage: UIImage!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        activeImage = UIImage(named: "active.png")!
        inactiveImage = UIImage(named: "inactive.png")!
    }

    func updateDots()
    {
        for i in 0 ..< self.subviews.count
        {
            let dot : UIImageView = imageViewForSubview(self.subviews[i])
            if (i == self.currentPagE) {
                dot.image = activeImage
            }
            else {
                dot.image = inactiveImage
            }
        }
    }

    func imageViewForSubview(view: UIView) -> UIImageView {
        var dot: UIImageView? = nil
        if (view.isKindOfClass(UIView)) {
            for subview: UIView in view.subviews {
                if (subview is UIImageView) {
                    dot = (subview as! UIImageView)
                }
            }
            if Dot == nil {
                dot = UIImageView(frame: CGRectMake(0.0,0.0,view.frame.size.width,view.frame.size.height))
                view.addSubview(dot!)
            }
        }
        else {
            dot = (view as! UIImageView)
        }
        return dot!
    }

    func setPage(page: int) {
        super.currentPage = page
        self.updateDots()
    }
}

我的问题是,当你第一次启动应用程序时,我无法更改图片.@H_403_16@它仅在页面更改时更改.

在viewDidLoad()中,我添加了setPage(0)和updateDots(),但是没有结果.我能做错什么?

解决方法

Swift 3.0 …你知道你是否接受陈述的风险:“修改现有控件的子视图是脆弱的”.

您必须在viewDidAppear()中调用updateDots()”,并为页面控件调用valueChanged处理程序.

import UIKit

 class CustomImagePageControl: UIPageControl {

   let activeImage:UIImage = UIImage(named: "SELEctedPage")!
   let inactiveImage:UIImage = UIImage(named: "UnSELEctedPage")!

   override func awakeFromNib() {
         super.awakeFromNib()

         self.pageInDicatorTintColor = UIColor.clear
         self.currentPageInDicatorTintColor = UIColor.clear
         self.clipsToBounds = false
    }

    func updateDots() {
         var i = 0
         for view in self.subviews {
             if let imageView = self.imageForSubview(view) {
                 if i == self.currentPage {
                     imageView.image = self.activeImage
                 } else {
                     imageView.image = self.inactiveImage
                 }
                 i = i + 1
             } else {
                 var dotImage = self.inactiveImage
                 if i == self.currentPage {
                     dotImage = self.activeImage
                 }
                 view.clipsToBounds = false
                 view.addSubview(UIImageView(image:dotImagE))
                 i = i + 1
             }
         }
     }

     fileprivate func imageForSubview(_ view:UIView) -> UIImageView? {
         var dot:UIImageView?

         if let dotImageView = view as? UIImageView {
             dot = dotImageView
         } else {
             for foundView in view.subviews {
                 if let imageView = foundView as? UIImageView {
                     dot = imageView
                     break
                 }
             }
         }

         return dot
     }
 }

大佬总结

以上是大佬教程为你收集整理的ios – 带点图像的自定义UIPageControl全部内容,希望文章能够帮你解决ios – 带点图像的自定义UIPageControl所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。