123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- //
- // Common.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2018/7/1.
- // Copyright © 2018年 南鑫林. All rights reserved.
- //
- import UIKit
- import DeviceKit
- import SnapKit
- import SwiftyJSON
- import ObjectMapper
- import RxAtomic
- import RxCocoa
- import RxSwift
- import Kingfisher
- //MARK: - 屏幕的高度
- ///屏幕宽度
- let kScreenWidth = UIScreen.main.bounds.size.width
- ///屏幕高度
- let kScreenHeight = UIScreen.main.bounds.size.height
- /// 屏幕宽比例
- let kScaleWidth = kScreenWidth/375.0
- /// 屏幕高比例
- let kScaleHeight = kScreenHeight/667.0
- /// 比例值
- func kScaleValue(value:CGFloat) -> CGFloat {
- return kScreenWidth / 375.0 * value
- }
- ///状态栏高度
- let kStatusBarHeight = UIApplication.shared.statusBarFrame.size.height
- ///navigation高度
- let kNavBarHeight = 44.0;
- ///状态栏顶部的高度
- let kStatusBarTopHeight = statusBarTopHeight()
- ///kNavBar高度
- let kNavBarBottom = navBarBottom()
- ///tabbar高度
- let kTabBarHeight = tabBarHeight()
- ///tabbar安全高度
- let kSafeTabBarHeight = safeTabBarHeight()
- ///视图的内容高度包含tabbar
- let kContentTabbarHeight = kScreenHeight - kNavBarBottom
- ///视图的内容安全高度包含tabbar
- let kContentSafeTabbarHeight = kScreenHeight - kNavBarBottom - kSafeTabBarHeight
- ///视图的内容高度不包含tabbar
- let kContentHeight = kScreenHeight - kNavBarBottom - kTabBarHeight
- ///navBar的高度
- func navBarBottom() -> CGFloat {
- return isIphoneX() ? 88.0 : 64.0
- }
- ///tabBar高度
- func tabBarHeight() -> CGFloat {
- return isIphoneX() ? 83.0 : 49.0
- }
- ///tabbar安全高度
- func safeTabBarHeight() -> CGFloat {
- return isIphoneX() ? 34.0 : 0.0
- }
- ///状态栏顶部的高度
- private func statusBarTopHeight() -> CGFloat {
- return isIphoneX() ? kStatusBarHeight : 0.0
- }
- ///是不是.iPhoneX,.iPhoneXr,.iPhoneXs,.iPhoneXsMax
- private func isIphoneX() -> Bool {
-
- let groupOfAllowedDevices: [Device] = [.iPhoneX,.iPhoneXr,.iPhoneXs,.iPhoneXsMax,.simulator(.iPhoneX),.simulator(.iPhoneXr),.simulator(.iPhoneXs),.simulator(.iPhoneXsMax)]
- let device = Device()
- if device.isOneOf(groupOfAllowedDevices) {
- return true
- }else {
- return false
- }
- }
- //MARK: - 返回本地图片
- /// 返回本地图片
- ///
- /// - Parameter name: 图片名字
- /// - Returns: 图片
- func kImage(name :String) -> UIImage? {
- return UIImage(named: name)
- }
- //MARK: - 返回url图片
- /// 返回url图片
- ///
- /// - Parameter name: 图片url
- /// - Returns: 图片
- func kURLImage(name :String) -> URL? {
- return URL(string: name)
- }
- //MARK: - 返回一个颜色
- /// 返回一个颜色
- ///
- /// - Parameters:
- /// - r: 红色
- /// - g: 黄
- /// - b: 蓝色
- /// - Returns: 颜色
- func kRGBColor(r:Float , g:Float , b:Float) -> UIColor {
- return UIColor(red: (CGFloat(r/255.0)), green: (CGFloat(g/255.0)), blue: (CGFloat(b/255.0)), alpha: 1.0)
- }
- //MARK: - 返回一个颜色
- /// 返回一个颜色
- ///
- /// - Parameters:
- /// - r: 红色
- /// - g: 黄
- /// - b: 蓝色
- /// - a: 透明度
- /// - Returns: 颜色
- func kRGBAColor(r:Float , g:Float , b:Float, a:Float) -> UIColor {
- return UIColor(red: (CGFloat(r/255.0)), green: (CGFloat(g/255.0)), blue: (CGFloat(b/255.0)), alpha: CGFloat(a))
- }
- /// 代码延迟运行
- ///
- /// - Parameters:
- /// - delayTime: 延时时间。比如:.seconds(5)、.milliseconds(500)
- /// - qosClass: 要使用的全局QOS类(默认为 nil,表示主线程)
- /// - closure: 延迟运行的代码
- func delay(by delayTime: TimeInterval, qosClass: DispatchQoS.QoSClass? = nil,
- _ closure: @escaping () -> Void) {
- let dispatchQueue = qosClass != nil ? DispatchQueue.global(qos: qosClass!) : .main
- dispatchQueue.asyncAfter(deadline: DispatchTime.now() + delayTime, execute: closure)
- }
- func getCurrentVC() -> UIViewController {
- let keywindow = (UIApplication.shared.delegate as! AppDelegate).window//UIApplication.shared.keyWindow使用此有时会崩溃
- let firstView: UIView = (keywindow?.subviews.first)!
- let secondView: UIView = firstView.subviews.first!
- var vc = viewForController(view: secondView)!
- vc = ((vc as! UITabBarController).selectedViewController! as! UINavigationController).visibleViewController!
- return vc
- }
- private func viewForController(view:UIView)->UIViewController?{
- var next:UIView? = view
- repeat{
- if let nextResponder = next?.next, nextResponder is UIViewController {
- return (nextResponder as! UIViewController)
- }
- next = next?.superview
- }while next != nil
- return nil
- }
|