1. 程式人生 > >Swift基礎之封裝蒙版指導檢視

Swift基礎之封裝蒙版指導檢視

相信大家都見到過,一個軟體添加了新功能,會給使用者使用步驟指導,所以我針對這個功能,便於使用的小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")
    }

效果圖: