首页 > 其他分享 >Swift基础之封装蒙版指导视图

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

时间:2022-11-28 17:05:38浏览次数:69  
标签:蒙版 aImageName self 视图 init aFrame aImageCount imageView Swift


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

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

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


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")
}

效果图:

Swift基础之封装蒙版指导视图_注释_02

 

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

 

Swift基础之封装蒙版指导视图_架构_04


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





标签:蒙版,aImageName,self,视图,init,aFrame,aImageCount,imageView,Swift
From: https://blog.51cto.com/u_15894905/5892249

相关文章

  • Swift基础之实现下拉变大和OC下拉变大上拉缩小Demo
    Swift语言实现下拉变大效果:(上拉缩小效果随后研究......)关键代码:方法一:self.automaticallyAdjustsScrollViewInsets=false;              tableViewW=UI......
  • Swift基础之封装一个WebViewController
    研究了一段时间,总算搞定了这个功能封装,现在给大家分享一下,具体看代码,上面有对应的文字描述,有问题请留言,下载源码,请帮忙点一下star,给点继续分享的动力,谢谢~/**//swift中......
  • Swift基础之init方法,实例(对象)方法,类(静态)方法的使用(多标签Demo)
    Xcode更新过后,有些方法都进行了改变,Demo中有变化的都进行了简单的标记,具体以后遇见再说创建一个UIView类,用init方法创建两种类型,显示多标签,创建静态方法进行调用,创建类方法......
  • Swift基础之Delegate方法的使用
    本文简单介绍了使用Delegate方法的进行值的传递,改变上一个界面的字体大小和颜色首先创建一个导航视图:letviewC=ViewController();       letnavigationC=UIN......
  • Swift基础之对FMDB第三方的使用方法
    相信大家都熟悉OC使用FMDB第三方库,进行数据库操作,增、删、改、查,现在我就来利用代码展示一下Swift对此库的使用方法,我是通过Pods添加的第三方库,如果手动添加记得创建桥接文......
  • Swift基础之PickerView(时间)选择器
    代码讲解:(后面有额外代码讲解)首页设计UIPickerView的样式设计:leftArray=["花朵","颜色","形状"];              letarray1=["茉莉","玫瑰","郁金香"......
  • Swift基础之仿资讯类实现频道的长按拖拽/删除/增加
    导读简单用Swift写了一个collectionview的拖拽点击排序效果;拖拽排序是新闻类的App可以说是必有的交互设计,如今日头条,网易新闻等。效果效果主要代码手势长按移动1.......
  • Swift基础之设计折线坐标图
    最近添加了折线视图的样式,所以在这里用Swift语言重新再使用设计一下首先设置纵坐标的数值是:体重//体重       letweightLabel=UILabel.init(frame:CGRectMake(0......
  • Swift 周报 第十七期
    前言本期是Swift编辑组自主整理周报的第八期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋......
  • MySQL进阶实战6,缓存表、视图、计数器表
    一、缓存表和汇总表有时提升性能最好的方法是在同一张表中保存衍生的冗余数据,有时候还需要创建一张完全独立的汇总表或缓存表。缓存表用来存储那些获取很简单,但速度较慢的数......