Swift基础之封装蒙版指导视图

来源:互联网 发布:libevent源码怎么读 编辑:程序博客网 时间:2024/06/03 18:06

相信大家都见到过,一个软件添加了新功能,会给用户使用步骤指导,所以我针对这个功能,便于使用的小demo,希望对大家有帮助。


源码中的注释比较详细,这里不再赘述,自行研究:

var imageName:String = String()//图片名称    var imageCount:Int = Int()//图片数量        //创建一个类方法,初始化    //注意:OC方法中instancetype类型,在Swift中变成了这样:(-> 类名称!)    //如果在方法中要使用自定义的init方法,需要在init方法前进行required修饰,然后self.init()调用 或者不加required修饰,直接 类名称.init()调用,建议使用第二种方法调用,因为如果使用的是系统的init方法,就无法添加required进行修饰了,需要重写方法,这样就比较麻烦了    class func jhGuideView(aFrame:CGRect,aImageName:String,aImageCount:Int) -> JHGuideView!{        return JHGuideView.init(aFrame:aFrame,aImageName:aImageName,aImageCount:aImageCount)    }    //而创建的init方法,进行初始化的时候,需要用super.init(frame: 必须有frame值)    init(aFrame:CGRect,aImageName:String,aImageCount:Int) {        super.init(frame: aFrame)        self.imageName = aImageName        self.imageCount = aImageCount        self.backgroundColor = UIColor.clear        self.createUI()    }    //MARK:------ 创建UI    func createUI() {        if imageCount >= 0 {            for i in 0 ..< imageCount {                let realImageName:NSString = NSString.init(format: "%@_%d", imageName,i+1)                let image:UIImage = UIImage.imageDeviceName(imageName: realImageName)                let imageView:UIImageView = UIImageView.init(frame: CGRect.init(x: 0, y: 0, width: Screen_Width, height: Screen_Height))                imageView.image = image;                imageView.isUserInteractionEnabled = true;                imageView.tag = 1000 + i                //添加手势                let tapG = UITapGestureRecognizer.init(target: self, action: #selector(touchImageView(tap:)))                imageView.addGestureRecognizer(tapG)                                self.addSubview(imageView)            }        }    }    //MARK:------ 手势方法    func touchImageView(tap:UITapGestureRecognizer) {        let tapImageView:UIImageView = tap.view as! UIImageView        //依次移除        tapImageView.removeFromSuperview()        if tapImageView.tag - 1000 == 0 {            //最后一张            self.hideView()        }            }    //MARK:------ 消失    func hideView() {        self.removeFromSuperview()    }    //判断是否显示过指导图    class func isShowGuiderView() -> Bool{        if UserDefaults.standard.object(forKey: isOpenGuide) == nil {            UserDefaults.standard.set(100, forKey: isOpenGuide)            UserDefaults.standard.synchronize()            return true        }else{            return false        }    }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }

效果图:

   


源码Demo:下载,请点star,谢谢~https://github.com/hbblzjy/SwiftGuideMengBanDemo





原创粉丝点击