IDealist框架-IOS常用框架集合
要求
- iOS 8.0+
- swift 3.0+
安装方式
- 使用 CocoaPods
pod 'IDealist'
设置所有组件的主题色
IDealistConfig.share.id_setupMainColor(color: UIColor.red)
项目中引用IDeal框架
引用IDealist内部的框架有2种方法
优点:有提示。缺点:需要每次都导入
-
@_exported import IDealist
优点:只要导入一次,缺点:可能没有代码提示
注意:对于IDealist框架,其内部含有很多扩展方法,需要使用 @_exported import IDealist
的方式导入一次即可,也有代码提示。
使用详解
IDToast
调用id_show方法,可传入参数介绍如下
// 默认纯文本、展示在window上、1.5秒消失、中间位置 // onView: 可以指定显示在指定的view上 // success=nil,展示纯文本,success=false展示错误的图片,success=true展示成功的图片 // position: 展示的位置IDToastPosition.top、IDToastPosition.middle、IDToastPosition.bottom id_show(msg: String, onView:UIView? = nil,success: IDToastUtilsImageType? = nil,duration:CGFloat? = nil, position: IDToastPosition? = .middle)
使用方式
IDToast.id_show(msg: "展示纯文本") IDToast.id_show(msg: "展示纯文本,在指定view上。指定3s", onView: self.view, duration: 3) IDToast.id_show(msg: "登录成功", success: IDToastUtilsImageType.success)
修改toast样式
IDToastManager.share.successImage = UIImage(named: "message_success") IDToastManager.share.textFont = UIFont.boldSystemFont(ofSize: 20) IDToastManager.share.textColor = UIColor.red IDToastManager.share.bgColor = UIColor(white: 0, alpha: 0.5) IDToastManager.share.cornerRadius = 8
使用注意
1.IDToast 默认是支持多任务顺序异步执行的,如果连续调用多次id_show,toast会依次执行。通过以下属性可控制该功能
IDToastManager.share.supportQuene = false
2.修改toast样式是通过单例来设置的,所以建议在项目初始化时就统一toast的样式。
IDDialog
目前提供4种类型的弹框
1.普通弹框,调用id_show方法
IDDialog.id_show(title: "温馨提示", msg: "确定要取消?", leftActionTitle: "确定", rightActionTitle: "取消", leftHandler: { }) { }
2.带有图片显示的弹框,调用id_showImg方法
IDDialog.id_showImg(success: IDDialogUtilImageType.success, msg: "提交成功", leftActionTitle: "知道了", rightActionTitle: nil, leftHandler: nil, rightHandler: nil)
3.带有输入文本框的弹框,调用id_showInput方法
IDDialog.id_showInput(msg: "请输入取消原因", leftActionTitle: "取消", rightActionTitle: "确定", leftHandler: { (text) in print(text) }) { (text) in print(text) }
4.自定义内容的弹框,调用id_showCustom方法
IDDialog.id_showCustom(msg: "标题", leftActionTitle: nil, rightActionTitle: "确定", customView: self.myView, leftHandler: { (customView) in }) { (customView) in }
属性介绍
/// 内容的对齐方式 public var textAlignment = NSTextAlignment.center /// 设置主题色,2个按钮时只设置右边的主题色,1个按钮时显示主题色 public var mainColor = UIColor.black /// 是否支持动画 public var supportAnimate = true /// 自定义动画 public var animate = CABasicAnimation() /// 成功图片 public var successImage = UIImage(named: "ic_toast_success", in: BundleUtil.getCurrentBundle(), compatibleWith: nil) /// 失败图片 public var failImage = UIImage(named: "icn_icn_fail", in: BundleUtil.getCurrentBundle(), compatibleWith: nil) /// 警告图片 public var warnImage = UIImage(named: "icon_sign", in: BundleUtil.getCurrentBundle(), compatibleWith: nil) /// 针对输入框类型的弹框,限制输入框的输入条件,文本框默认没有限制,在文本框消失时,自动重置文本框的属性 /// 最多允许输入多少个字符 public var maxLength: Int? /// 只允许输入数字和小数点 public var onlyNumberAndPoint: Bool? /// 设置小数点位数 public var pointLength: Int? /// 只允许输入数字 public var onlyNumber: Bool? /// 禁止输入表情符号emoji public var allowEmoji: Bool? /// 正则表达式 public var predicateString: String?
IDLoading
loading的类型
public enum IDLoadingUtilLoadingType { case wait // 会阻止用户交互, 需要等待加载完成 case nav // 一条进度线条 case free // 不会阻止用户交互 }
1.展示不阻止用户交互的加载框
IDLoading.id_show() IDLoading.id_dismiss() // 取消
2.展示阻止用户交互的加载框
IDLoading.id_showWithWait() IDLoading.id_dismissWait()
3.展示网页加载进度
IDLoading.id_showProgressLine(onView: self.navView) IDLoading.id_dismissNav()
4.自定义gif动画
IDLoading.id_showGif(gifName: nil, type: IDLoadingUtilLoadingType.free, onView: self.view) IDLoading.id_dismissGif()
5.定制网页加载进度条的颜色
IDLoading.id_showProgressLine(onView: self.navView, colors: [RGBAColor(0, 238, 0, 0.1).cgColor, RGBAColor(0, 238, 0, 0.5).cgColor, RGBAColor(0, 238, 0, 1).cgColor])
IDImagePicker
1.访问相册,外部弹出
let picker = IDImagePicker() picker.cameraOut = true picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
2.访问相册,默认多选
let picker = IDImagePicker() picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
3.访问相册,单选
let picker = IDImagePicker() picker.singleImageChooseType = .singlePicture picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
4.高度定制导航栏颜色
let picker = IDImagePicker() picker.navColor = UIColor.purple picker.navTitleColor = UIColor.white picker.statusBarType = .white picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
5.高度定制主题色
let picker = IDImagePicker() picker.tineColor = UIColor.green picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
IDScanCode
二维码与条形码扫描控件,而且能够实现快速的扫描二维码和条形码
1.使用方法
新建控制器继承IDScanCodeController即可
2.可定制的一些提示语
id_scanTitle // 扫描框顶部的提示语,默认无 id_scanDetailTitle // 扫描框底部的提示语,默认是“将二维码/条码放入框内,即可自动扫描”
IDEmptyView
使用
IDEmptyView 扩展了UIView,可以通过id_empty属性添加到目标视图
当你需要展示或隐藏的时候可以利用rxcocoa的扩展绑定数据和isHidden属性
view.id_empty = IDEmptyView.create().configStyle(style)
创建并使用
let emptyView = IDEmptyView.create().configStyle(style) view.addSubview(emptyView)
style 可设置为
public enum Style { case normal //有为什么为空状态说明 case normalDeail(String) //可操作空状态 case normalOperational //可操作并有说明的空状态 case normalDetailOperational(String) //网络加载失败可操作 case load //网络环境不良可操作 case loadDetail // 空状态的文字提示 case detail(String) }
当你的style 为 normalOperational,normalDetailOperational,load,loadDetail时
emptyView.setOperatorAction { /// 重新加载页面或者做其他事 } ///也可以在创建的时候设置 let emptyView = IDEmptyView.create().configStyle(style).setOperatorAction {} view.addSubview(emptyView)
自定义图片,文本,按钮文字
emptyView.custom(image, title, detail, buttonText)
IDUIKit
1.IDButton
按钮的类型
public enum IDButtonType { case normal case primary case error case loading } normal: self.layer.borderWidth = 1 self.setTitleColor(UIColor.black, for: UIControl.State.normal) self.backgroundColor = UIColor.white primary: // 背景色是主题色 self.backgroundColor = ColorConfig.share.mainColor self.layer.borderWidth = 0 self.setTitleColor(UIColor.white, for: UIControl.State.normal) error: // 背景色是红色 self.backgroundColor = RGBAColor(233, 80, 79, 1) // 写死的颜色 self.layer.borderWidth = 0 self.setTitleColor(UIColor.white, for: UIControl.State.normal) loading: // 可以展示一个loading动画 self.id_startLoading() // 开始动画 self.id_stopLoading() // 结束动画
按钮图片的位置
public enum IDButtonPosition { case left // 图片在文字左侧 case right // 图片在文字右侧 case top // 图片在文字上侧 case bottom // 图片在文字下侧 }
设置按钮渐变色
public enum IDButtonGradientDirection { case horizontally case vertically } public func id_setupGradient(gradientColors: [UIColor], gradientDirection direction: IDButtonGradientDirection, gradientFrame: CGRect? = nil) { .... }
部分属性
/// 图片位置 open var id_imagePosition = IDButtonPosition.left /// 图片和文字之间的间距 open var id_imageTitleSpace: CGFloat = 0 /// loading视图和文字之间的间距 open var id_loadingTitleSpace: CGFloat = 5 /// 按钮类型 open var id_type: IDButtonType = .normal /// 加载框大小 open var id_loadingSize: CGSize = CGSize.init(width: 15, height: 15)
2.IDLabel
开启长按复制功能
label.id_canCopy = true
富文本:图片插入的文字的指定位置
label.id_setupAttbutImage(img: UIImage(named: "ic_new")!, index: 0)
3.IDTextView
部分属性
/// 占位文字 public var id_placehoder: String? public var id_placehoderColor: UIColor? /// 文字改变的回调 public var textChangeClouse: IDTextViewTextDidChangedClouse? /// 最多允许输入多少个字符 public var id_maxLength: Int? /// 只允许输入数字和小数点 public var id_onlyNumberAndPoint: Bool? /// 设置小数点位数 public var id_pointLength: Int? /// 只允许输入数字 public var id_onlyNumber: Bool? /// 禁止输入表情符号emoji public var id_allowEmoji: Bool? /// 正则表达式 public var id_predicateString: String? /// 是否支持文本高度跟随内容变化而变化 public var id_supportAutoHeight = false
4.IDPopView
为了达到高度定制内容的需求,IDPopView只提供了一个盛放内容的容器,容器内的具体内容是需要外界传入的。
/// self.contentView 是一个外界UIView let pop = IDPopView.init(contentView: self.contentView) /// 箭头的位置IDPopViewArrowPosition.left、center、right、custom pop.id_arrowPosition = .left /// 箭头的位置 pop.id_trianglePoint = CGPoint.init(x: KScreenWidth-30, y: 120) /// popview展示在的具体的位置 pop.showInRect(rect: CGRect.init(x: KScreenWidth-160-10, y: 128, width: 160, height: self.contentView.frame.height + 16))
5.IDProgressView
IDProgressCircleView展示的是圆形进度条、饼图进度条。部分属性:
/// value的范围是0-100 public var id_value: CGFloat = 0 /// 默认是2 public var id_lineWidth: CGFloat = 2 /// 颜色 public var id_fillColor: UIColor = (ColorConfig.share.mainColor ?? UIColor.white) /// 类型 .circle、.pie public var id_type: IDProgressCircleViewType = .circle
6.IDSearchBar
部分属性如下
/// 占位文字 public var id_placeHolder: String = "请输入搜索关键字" /// 搜索图片 public var id_searchImage: UIImage? = UIImage(named: "ic_ssearch", in: BundleUtil.getCurrentBundle(), compatibleWith: nil) /// 搜索框背景颜色 public var id_textFieldBgColor = UIColor.white /// 搜索框字体大小 public var id_textFieldFont = UIFont.systemFont(ofSize: 12) /// 右边按钮的文字 public var id_cancelButtonTitle = "取消" /// 右边按钮的文字颜色 public var id_cancelButtonTitleColor = RGBAColor(95,95,95,1) /// 右边按钮的文字字体 public var id_cancelButtonTitleFont = UIFont.systemFont(ofSize: 13) /// 是否显示右边的按钮 public var id_showRightBtn = false /// 搜索容器的背景色 public var id_containerBgColor = RGBAColor(239, 239, 244, 1) /// 搜索框的圆角大小 public var id_cornerRadius: CGFloat = 2
7.IDSwitch
IDSwitch继承自UIControl, 默认宽80,高度40
8.IDTextField
部分属性
/// 最多允许输入多少个字符 public var maxLength: Int? /// 只允许输入数字和小数点 public var onlyNumberAndPoint: Bool? /// 设置小数点位数 public var pointLength: Int? /// 只允许输入数字 public var onlyNumber: Bool? /// 禁止输入表情符号emoji public var allowEmoji: Bool? /// 正则表达式 public var predicateString: String?
9.IDSelectView
IDSelectView目前提供3种类型的视图,详细参数较多,请参考demo事例。该视图对JXSegmentedView的再次封装,提取了常用的功能点。
public enum IDSelectViewType { case normal // 标题 case number // 含有数字显示 case dots // 含有原点显示 }
IDUtils (扩展方法和 工具 类)
String的扩展方法
/// 字符串截取函数,截取到指定的位置 public func id_subString(to index: Int) -> String { ... } /// 字符串截取函数,从指定位置开始截取 public func id_subString(from index: Int) -> String { ... } /// 从指定位置开始截取, 截取到指定的位置 public func id_subString(from index: Int, offSet: Int) -> String { ... }
UIView的扩展方法
public var id_x: CGFloat public var id_y: CGFloat public var id_height: CGFloat public var id_width: CGFloat public var id_size: CGSize public var id_centerX: CGFloat public var id_centerY: CGFloat /// 设置渐变色 public func id_addGradientLayer(gradientColors: [UIColor],gradientDirection direction: UIViewGradientDirection, gradientFrame: CGRect? = nil) { ... } /// 设置圆角 public func id_border(borderWidth: CGFloat?, borderColor:UIColor?,cornerRadius:CGFloat?) -> UIView{ ... } /// 设置指定部位的圆角 public func id_borderSpecified(_ specified: UIRectCorner,cornerRadius:CGFloat) -> UIView { ... }
URL的扩展
// 过滤字符串中的特殊字符 public static func id_init(string:String) -> URL? { ... }
Array的扩展
// 去重 public func id_filterDuplicates<E: Equatable>(_ filter: (Element) -> E) -> [Element] { ... }
UIColor的扩展
// 通过字符串设置color public convenience init(hexString: String) { ... } // 通过rgb值设置颜色 convenience init(redValue: Int, green: Int, blue: Int, alpha: CGFloat) { .. }
UIDevice的扩展
// 是否是iphonex 系列 public static func id_isX() -> Bool { ... } // 是否是ios11以上的系统 public static func id_isIOS11() -> Bool { .. }
UIViewController的扩展
// 获取当前控制器 public func id_getCurrentViewcontroller() -> UIViewController?{ ... }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- JDK集合框架小结
- JAVA集合框架(三)-Map
- Java集合框架——List接口
- Java面试题-集合框架篇三
- 探索JDK(集合框架)——HashMap 原 荐
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。