IOS常用框架集合
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?{ ... }