IOS經常使用框架集合

IDealist框架-IOS經常使用框架集合

githubios

Pod Version
Pod Platform
Pod License

部分截圖git

要求

  • iOS 8.0+
  • swift 3.0+

安裝方式

  • 使用 CocoaPods
pod 'IDealist'
設置全部組件的主題色
IDealistConfig.share.id_setupMainColor(color: UIColor.red)

項目中引用IDeal框架

引用IDealist內部的框架有2種方法

1.按需導入,每一個文件中須要哪一個框架就引用哪一個,例如:import IDealist。

優勢:有提示。缺點:須要每次都導入github

-正則表達式

2.使用 @_exported 關鍵字導入一次便可。例如: @_exported import IDealist

優勢:只要導入一次,缺點:可能沒有代碼提示swift

注意:對於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)

使用方式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的樣式。


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

封裝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)

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

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

6.IDSearchBar

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?{
...
}
相關文章
相關標籤/搜索