githubios
部分截圖git
pod 'IDealist'
IDealistConfig.share.id_setupMainColor(color: UIColor.red)
1.按需導入,每一個文件中須要哪一個框架就引用哪一個,例如:import IDealist。優勢:有提示。缺點:須要每次都導入github
-正則表達式
2.使用 @_exported 關鍵字導入一次便可。例如:@_exported import IDealist
優勢:只要導入一次,缺點:可能沒有代碼提示swift
注意:對於IDealist框架,其內部含有不少擴展方法,須要使用@_exported import IDealist
的方式導入一次便可,也有代碼提示。網絡
調用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)
使用方式iphone
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的樣式。
目前提供4種類型的彈框
IDDialog.id_show(title: "舒適提示", msg: "肯定要取消?", leftActionTitle: "肯定", rightActionTitle: "取消", leftHandler: { }) { }
IDDialog.id_showImg(success: IDDialogUtilImageType.success, msg: "提交成功", leftActionTitle: "知道了", rightActionTitle: nil, leftHandler: nil, rightHandler: nil)
IDDialog.id_showInput(msg: "請輸入取消緣由", leftActionTitle: "取消", rightActionTitle: "肯定", leftHandler: { (text) in print(text) }) { (text) in print(text) }
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?
public enum IDLoadingUtilLoadingType { case wait // 會阻止用戶交互, 須要等待加載完成 case nav // 一條進度線條 case free // 不會阻止用戶交互 }
IDLoading.id_show() IDLoading.id_dismiss() // 取消
IDLoading.id_showWithWait() IDLoading.id_dismissWait()
IDLoading.id_showProgressLine(onView: self.navView) IDLoading.id_dismissNav()
IDLoading.id_showGif(gifName: nil, type: IDLoadingUtilLoadingType.free, onView: self.view) IDLoading.id_dismissGif()
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])
let picker = IDImagePicker() picker.cameraOut = true picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
let picker = IDImagePicker() picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
let picker = IDImagePicker() picker.singleImageChooseType = .singlePicture picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
let picker = IDImagePicker() picker.navColor = UIColor.purple picker.navTitleColor = UIColor.white picker.statusBarType = .white picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
let picker = IDImagePicker() picker.tineColor = UIColor.green picker.id_setupImagePickerWith(maxImagesCount: 10) { (assrtArr, img) in }
二維碼與條形碼掃描控件,並且可以實現快速的掃描二維碼和條形碼
1.使用方法
新建控制器繼承IDScanCodeController便可
2.可定製的一些提示語
id_scanTitle // 掃描框頂部的提示語,默認無 id_scanDetailTitle // 掃描框底部的提示語,默認是「將二維碼/條碼放入框內,便可自動掃描」
使用
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)
封裝IDButton的緣由:解決Button的圖片位置問題。當系統的Button的寬度自適應而且Button的樣式是文字和圖片的結合,圖片能夠在頂部,右側,底部,此時若是使用imageEdgeInsets和titleEdgeInsets是達不到理想效果的,IDButton由此產生。IDButton繼承自系統的Button。按鈕的類型
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)
開啓長按複製功能
label.id_canCopy = true
富文本:圖片插入的文字的指定位置
label.id_setupAttbutImage(img: UIImage(named: "ic_new")!, index: 0)
部分屬性
/// 佔位文字 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
爲了達到高度定製內容的需求,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))
IDProgressView繼承自UIProgressView,初始化的時候設置了主題色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
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
IDSwitch繼承自UIControl, 默認寬80,高度40
部分屬性
/// 最多容許輸入多少個字符 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?
IDSelectView目前提供3種類型的視圖,詳細參數較多,請參考demo事例。該視圖對JXSegmentedView的再次封裝,提取了經常使用的功能點。
public enum IDSelectViewType { case normal // 標題 case number // 含有數字顯示 case dots // 含有原點顯示 }
/// 字符串截取函數,截取到指定的位置 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 { ... }
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 { ... }
// 過濾字符串中的特殊字符 public static func id_init(string:String) -> URL? { ... }
// 去重 public func id_filterDuplicates<E: Equatable>(_ filter: (Element) -> E) -> [Element] { ... }
// 經過字符串設置color public convenience init(hexString: String) { ... } // 經過rgb值設置顏色 convenience init(redValue: Int, green: Int, blue: Int, alpha: CGFloat) { .. }
// 是不是iphonex 系列 public static func id_isX() -> Bool { ... } // 是不是ios11以上的系統 public static func id_isIOS11() -> Bool { .. }
// 獲取當前控制器 public func id_getCurrentViewcontroller() -> UIViewController?{ ... }