import UIKit
// MARK: 系統相關
/// Info
public let kAppBundleInfoVersion = Bundle.main.infoDictionary ?? Dictionary()
/// plist: AppStore 使用VersionCode 1.0.1
public let kAppBundleVersion = (kAppBundleInfoVersion["CFBundleShortVersionString" as String] as? String ) ?? ""
/// plist: 例如 1
public let kAppBundleBuild = (kAppBundleInfoVersion["CFBundleVersion"] as? String ) ?? ""
public let kAppDisplayName = (kAppBundleInfoVersion["CFBundleDisplayName"] as? String ) ?? ""
// MARK: 系統相關
public let kiOSBase = 8.0
public let kOSGreaterOrEqualToiOS8 = ( (Double(UIDevice.current.systemVersion) ?? kiOSBase) > 8.0 ) ? true : false;
public let kOSGreaterOrEqualToiOS9 = ((Double(UIDevice.current.systemVersion) ?? kiOSBase) >= 9.0 ) ? true : false;
public let kOSGreaterOrEqualToiOS10 = ((Double(UIDevice.current.systemVersion) ?? kiOSBase) >= 10.0 ) ? true : false;
public let kOSGreaterOrEqualToiOS11 = ((Double(UIDevice.current.systemVersion) ?? kiOSBase) >= 11.0 ) ? true : false;
//設備寬高、機型
public let kScreenHeight = UIScreen.main.bounds.size.height
public let kScreenWidth = UIScreen.main.bounds.size.width
public let kStatusBarheight = UIApplication.shared.statusBarFrame.size.height
public let kNavBarHeight_StatusHeight: ((UIViewController)-> CGFloat) = {(vc : UIViewController ) -> CGFloat in
weak var weakVC = vc;
var navHeight = weakVC?.navigationController?.navigationBar.bounds.size.height ?? 0.0
return (navHeight + kStatusBarheight)
}
// MARK: ============================================================================
// MARK: Dictory Array Strig Object 閉包方式
///過濾null對象
public let kFilterNullOfObj:((Any)->Any?) = {(obj: Any) -> Any? in
if obj is NSNull {
return nil
}
return obj
}
///過濾null的字符串,當nil時返回一個初始化的空字符串
public let kFilterNullOfString:((Any)->String) = {(obj: Any) -> String in
if obj is String {
return obj as! String
}
return ""
}
/// 過濾null的數組,當nil時返回一個初始化的空數組
public let kFilterNullOfArray:((Any)->Array<Any>) = {(obj: Any) -> Array<Any> in
if obj is Array<Any> {
return obj as! Array<Any>
}
return Array()
}
/// 過濾null的字典,當為nil時返回一個初始化的字典
public let kFilterNullOfDictionary:((Any) -> Dictionary<AnyHashable, Any>) = {( obj: Any) -> Dictionary<AnyHashable, Any> in
if obj is Dictionary<AnyHashable, Any> {
return obj as! Dictionary<AnyHashable, Any>
}
return Dictionary()
}
// MARK: ============================================================================
// MARK: 設置Nib、Stryboard、UIImage
/// 根據imageName創建一個UIImage
public let imageNamed:((String) -> UIImage? ) = { (imageName : String) -> UIImage? in
return UIImage.init(named: imageName)
}
/// 根據Main.storyboard建立ViewController
public let VC_From_Main_SB:((String)-> UIViewController? ) = {(SBID : String) -> UIViewController? in
return UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier:SBID)
}
// MARK: ============================================================================
// MARK: 設置顏色
/// 設置顏色值
public let HexRGB:((Int) -> UIColor) = { (rgbValue : Int) -> UIColor in
return HexRGBAlpha(rgbValue,1.0)
}
/// 通過 十六進制與alpha來設置顏色值 ( 樣式: 0xff00ff )
public let HexRGBAlpha:((Int,Float) -> UIColor) = { (rgbValue : Int, alpha : Float) -> UIColor in
return UIColor(red: CGFloat(CGFloat((rgbValue & 0xFF0000) >> 16)/255), green: CGFloat(CGFloat((rgbValue & 0xFF00) >> 8)/255), blue: CGFloat(CGFloat(rgbValue & 0xFF)/255), alpha: CGFloat(alpha))
}
/// 通過 red 、 green 、blue 、alpha 顏色數值
public let RGBAlpa:((Float,Float,Float,Float) -> UIColor ) = { (r: Float, g: Float , b: Float , a: Float ) -> UIColor in
return UIColor.init(red: CGFloat(CGFloat(r)/255.0), green: CGFloat(CGFloat(g)/255.0), blue: CGFloat(CGFloat(b)/255.0), alpha: CGFloat(a))
}
Swift 4.0常用宏定義屬性與方法
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- UIView+SGFrame.h #import @interface UIView (SGFrame) @pro...