LGLBaseKit
前言
本库旨在方便码友轻松获取常用设备数据、创建控件、快速搭建应用。码友可以将常用的方法提供给我,我会在 LGLMethod
类中补充。欢迎加入群聊 457236811 进行交流。
安装
LGLBaseKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 即可。
1.全部导入
pod 'LGLBaseKit'
2.仅导入UI相关代码
//只导入与UI相关文件(LGLExtension, LGLDeviceInfo, LGLAlert)
pod 'LGLBaseKit/LGLBaseUIKit'
3.单独文件导入
//只导入LGLExtension创建和修改view的扩展方法
pod 'LGLBaseKit/LGLExtension'
//只导入LGLPublicMethod常用的方法
pod 'LGLBaseKit/LGLExtension'
//只导入LGLDeviceInfo设备的参数(包括app信息和手机系统信息)
pod 'LGLBaseKit/LGLDeviceInfo'
//只导入LGLAlert简单封装系统的alert和action弹窗
pod 'LGLBaseKit/LGLAlert'
//只导入LGLCrypt加密(Md5加密,AESAES(128+CBC+PKCS7Padding),RSA(SHA1withRSA)加签,验签,加解密等)
pod 'LGLBaseKit/LGLCrypt'
0.1.2版本更新
补充判断设备的Model(iPhone 11 Pro, iPhone XS Max ...)
新增一些实用的方法,请查看具体代码
0.0.8版本更新摘要
1.修复LGLMethod中用"*"替换文字无效果的问题 2.LGLMethod新增新的方法。 3.增加LGLShowText简单的提示错误文字弹窗
class func showTextView(_ message: String?)
class func showTextView(_ message: String?, _ textFont: UIFont)
4.新增获取屏幕适配比例的方法
/**获取宽度比例 以iphone6 为基准
默认屏幕宽度比例大于1(X:1.104)的默认乘以1.02 */
class func wRatio(ratio: CGFloat = 1.02) -> CGFloat
/** 获取高度比例 以iphone6 为基准
默认屏幕高度比例大于1的 乘以1.02
(5.8的返回1.0,因为宽度比例是1所以不做高度增加处理)*/
class func hRatio(ratio: CGFloat = 1.02) -> CGFloat
0.0.7版本更新摘要
新增可以只导入UI相关的方法
pod 'LGLBaseKit/LGLBaseUIKit'
0.0.6版本部分重要更新摘要
1. 支持单独导入每个部分文件
2. UIColor增加用于适配iOS13的暗黑模式和其它模式的颜色设置
///适配暗黑模式设置颜色 dark -- 暗黑模式下的颜色 light -- 其他模式下的颜色
UIColor.lgl_traitColor(darkColor, lightColor) -> UIColor
UIColor.lgl_traitColor(lightColor) -> UIColor
3. 修复UITextField在iOS13使用KVC设置_placeholderLabel颜色和字体大小时崩溃的问题
4. 新增LGLAlert系统的提示弹窗
5. 新增LGLCrypt加密工具
如何使用?
一、导入头文件
import LGLBaseKit
LGLDevice
分类包含与设备相关参数(屏幕宽高、设备型号判断、设备参数、系统参数等)
二、 LGLDevice分类使用:LGLDevice.screenBounds
1.常用设备的系数和机型判断
属性/变量/方法 | 返回值类型 | 说明 |
---|---|---|
screenBounds | CGRect | 整个设备屏幕的大小 |
screenWidth | CGFloat | 设备屏幕的宽 |
screenHeight | CGFloat | 设备屏幕的高 |
screenScale | CGFloat | 设备屏幕的倍数 @2x @3x |
navigationHeight | CGFloat | 导航栏高度 |
statusBarHeight | CGFloat | 状态栏的高度 |
navigationBarHeight | CGFloat | 导航栏的高度 |
tabBarHeight | CGFloat | Tabbar的高度 |
bottomSafeAreaHeight | CGFloat | 底部安全域的高度 |
widthRatio | CGFloat | 屏幕横向适配系数,以iPhone 6为基准 |
heightRatio | CGFloat | 屏幕纵向适配系数,以iPhone 6为基准 |
wRatio | CGFloat | 屏幕横向适配系数,参数默认ratio=1.02 |
hRatio | CGFloat | 屏幕纵向适配系数,参数默认ratio=1.02 |
phoneModelSize | CGSize | 获取当前设备分辨率 |
phoneEqualTo(_ size: CGSize) | Bool | 比较两个设备的分辨率(与当前设备比较) |
iPadType | Bool | 判断是否是iPad |
iPhoneXType | Bool | 判断是否是刘海屏设备系列 |
iPhoneInch65 | Bool | 判断6.5英寸(iPhone XS Max) |
iPhoneInch61 | Bool | 判断6.1英寸(iPhone XR) |
iPhoneInch58 | Bool | 判断5.8英寸(iPhone XS/iPhone X) |
iPhoneInch55 | Bool | 判断5.5英寸(iPhone 6/6s/7/8 Plus) |
iPhoneInch47 | Bool | 判断4.7英寸(iPhone 6/6s/7/8) |
iPhoneInch4 | Bool | 判断4英寸(iPhone SE) |
2.系统配置信息
属性/变量/方法 | 返回值类型 | 说明 |
---|---|---|
systemVersion | String | 获取系统版本 |
systemName | String | 获取系统名称 |
deviceModel | String | 获取系统名称 "iPhone", "iPod touch" |
deviceLocalizedModel | String | 获取系统名称本地化版本 |
deviceUserName | String | 获取设备名称,如XXX的iPhone |
deviceDiskTotalSize | String | 获取总内存 |
deviceAvalibleDiskSize | String | 获取可用内存 |
supplier | String | 获取运营商 |
deviceIP | String | 获取当前设备IP |
deviceCpuCount | Int | 获取CPU核心数 |
deviceCpuType | String | 获取CPU类型 |
deviceName | String | 获取设备名称 |
3.APP信息
属性/变量/方法 | 返回值类型 | 说明 |
---|---|---|
appName | String | App名称,获取失败则返回空字符串 |
appBundleId | String | App包名,获取失败则返回空字符串 |
appVersion | String | App版本号,获取失败则返回空字符串 |
appIdfa | String | AppIdfa,用户关闭则返回空字符串 |
appIdfv | String | AppIdfv,获取失败则返回空字符串 |
appBundleName | String | app工程名称 获取失败则返回空字符串 |
三、UI控件(绘制阴影,渐变色,View转图片,根据View获取控制器)、颜色、字符串(富文本,常见的正则判断等)的 Extension
1. UI控件,使用时都使用类名或者实例创建或设置,更多方法请查阅具体View的扩展方法
UIView+Extension
///初始化View 设置背景颜色
let view = UIView.lgl_view(.red)
///初始化View 设置背景颜色、圆角
let view2 = UIView()
view2.lgl_view(.red, 20)
/// 水平渐变
let view3 = UIView()
view3.lgl_horizontalGradientLayer(.red, .red, 20)
/// 垂直渐变
view3.lgl_verticalGradientLayer(.red, .red, 20)
/// 设置view的切角
view3.lgl_roundingCorner([.topLeft, .topRight], _ radii: 5)
///给View添加阴影
view3.lgl_shadow(.red, CGSize(width:0, height:3), 0.2, 10, 8)
///给View添加阴影和边框
view3.lgl_shadowBorder(.red, CGSize(width:0, height:3), 0.2, 10, 8, .gray)
///获取当前View的控制器
let currentVC = view3.lgl_viewGetcurrentVC()
///view转图片
let image = view3.lgl_viewToImage()
UIImageView+Extension
///设置图片初始化
let imageV = UIImageView.lgl_imagView("图片名字.png")
///设置图片
let imageV = UIImageView()
imageV.lgl_imagView("图片名字.png")
UILabel+Extension
///初始化label 字体、字体颜色 字体大小、对齐方式、行数
let label = UILabel.lgl_label("文字", .red, UIFont.systemFont(ofSize: 14), .left, 0)
///设置label 字体、字体颜色、背景颜色、 字体大小、对齐方式、行数
let label = UILabel()
label.lgl_label("文字", .red, .white, UIFont.systemFont(ofSize: 14),.left, 0)
///设置label 切圆角
let label = UILabel()
label.lgl_labelRadius(12)
///设置label 边框和边框颜色
let label = UILabel()
label.lgl_labelBorder(.red, 1)
///设置label 边框、边框颜色、切圆角
let label = UILabel()
label.lgl_labelBorder(.red, 1, 10)
UIButton+Extension
////初始化button 设置 标题文字、文字颜色、文字大小
let btn = UIButton.lgl_button("标题", .red, UIFont.systemFont(ofSize: 14), self, #selector(selectBtn))
////设置button 标题文字、文字颜色、文字大小
let btn = UIButton(type: .custom)
btn.lgl_button("标题", .red, UIFont.systemFont(ofSize: 14), self, #selector(selectBtn))
///设置图片
let btn = UIButton(type: .custom)
btn.lgl_buttonImage("normal_image_name.png", "select_image_name.png")
///设置背景图片
let btn = UIButton(type: .custom)
btn.lgl_buttonBackgroundImage("normal_back_image_name.png", "select_back_image_name.png")
///设置圆角
let btn = UIButton(type: .custom)
btn.lgl_buttonRadius(10)
///设置边框颜色、边框宽度
let btn = UIButton(type: .custom)
btn.lgl_buttonBorder(.red, 1)
///设置边框颜色、边框宽度、圆角
let btn = UIButton(type: .custom)
btn.lgl_buttonBorder(.red, 1, 10)
UITextField+Extension
///初始化TextField 字体颜色、 字体大小、提示文字、边框样式
let field = UITextField.lgl_textField(.red, UIFont.systemFont(ofSize: 14), "提示文字", .none)
///设置TextField 字体大小、字体颜色、提示文字、边框样式
let field = UITextField()
field.lgl_textField(.red, UIFont.systemFont(ofSize: 14), "提示文字", _ borderStyle: .none)
///设置Placeholder的字体大小和颜色
let field = UITextField()
field.lgl_textFieldPlaceholder(.red, UIFont.systemFont(ofSize: 14))
///设置LeftView
let field = UITextField()
let leftView = UIView()
field.lgl_textFieldSetLeftView(leftView)
///设置RightView
let field = UITextField()
let rightView = UIView()
field.lgl_textFieldSetRightView(rightView)
///修改clear按钮的图片
let field = UITextField()
field.lgl_textFieldChangeClearButton("clear_btn_image.png")
///切圆角
let field = UITextField()
field.lgl_textFieldCornerRadius(10)
UIImage+Extension
/**图片拉伸 指定
edgeInset 指定不被拉伸的区域
imageName 图片名称
resizeMode UIImageResizingModeTile,//进行区域复制模式拉伸 【-】 -> 【-】【-】【-】
resizeMode UIImageResizingModeStretch,//进行渐变复制模式拉伸 连续的 【-】 -> 【-----】
*/
let image = UIImage(named:"image.png")
///设置要保留的部分
let uiedgeSet = UIEdgeInsets(top: 11, left:0, bottom: 11, right: 0)
let resizeMode = .stretch
let strechImage = image.lgl_stretchImage(uiedgeSet, resizeMode)
}
2. 颜色
///设置颜色
let color = UIColor(0xefefef)
let color = UIColor.lgl_color("#efefef") -> UIColor
///适配暗黑模式设置颜色 dark -- 暗黑模式下的颜色 light -- 其他模式下的颜色
///darkColor lightColor
let color = UIColor.lgl_traitColor(.white, black)
let color = UIColor.lgl_traitColor(.white)
3. 字符串
/// --- 基于NSRegularExpression判断 --
方法 | 返回值类型 | 说明 |
---|---|---|
lgl_isMatch(regularString: String) | Bool | 字符串参数(自定义正则判断) |
lgl_isMatch(regularString: XLRegularString) | Bool | 枚举值参数(自定义正则判断) |
lgl_isPhoneNumber() | Bool | 判断手机号 |
lgl_isTelePhoneNumber() | Bool | 判断固定电话 |
lgl_isVericationCode() | Bool | 验证码格式 |
lgl_isEmail() | Bool | 判断邮箱 |
lgl_isUsername() | Bool | 判断用户名 |
lgl_isPassword() | Bool | 判断密码 |
lgl_isPostalCode() | Bool | 判断邮政编码 |
lgl_isIDCardNumber() | Bool | 判断身份证号 |
lgl_hasNumber() | Bool | 是否包含数字的字符串 |
lgl_allNumber() | Bool | 是否纯数字字符串 |
lgl_hasLowerCase() | Bool | 是否包含小写字母的字符串 |
lgl_allLowerCase() | Bool | 是否纯小写字母字符串 |
lgl_hasUpperCase() | Bool | 是否包含大写字母的字符串 |
lgl_allUpperCase() | Bool | 是否纯大写字母字符串 |
lgl_hasLetter() | Bool | 是否包含字母的字符串 |
lgl_allLetter() | Bool | 是否纯字母字符串 |
lgl_hasNumberOrLetter() | Bool | 是否包含数字或字母的字符串 |
lgl_bothNumberAndLetter() | Bool | 是否同时包含数字和字母的字符串 |
lgl_hasEmoji() | Bool | 是否包含表情符 |
lgl_hasChinese() | Bool | 是否包含中文字符 |
NSAttributedString
///获取某一段文字的CGSize
let str = "这是要获取字符串size的文字"
let font = UIFont.systemFont(ofSize: 14)
let maxWidth = 100
let size = str.lgl_getStrSize(font, maxWidth)
///修改指定文字的字体大小 和 颜色
let str = "这是要获取字符串size的文字"
let changeText = "获取字符"
let attributestr = str.lgl_modifyRangeText(changeText, .red, font)
///设置行间距
let lineHeight = 5
let alignment = .center
let attributestr = str.lgl_modifyLineHeight(lineHeight, alignment)
///设置指定范围内文字的颜色
let range = NSRange(location:1, length: 3)
let attributestr = str.lgl_modifyRangeTextColor(range, .red)
///设置指定范围内文字的下划线 颜色
let range = NSRange(location:1, length: 3)
let rangeColor = .red
let lineColor = .red
let attributestr = str.lgl_modifyRangeUnderLine( range, rangeColor, lineColor)
///设置行间距 和 首行缩进缩进两个字符
let lineHeight = 5
let font = UIFont.systemFont(ofSize: 14)
let attributestr = str.lgl_setHeadIndent(lineHeight, font)
///设置一条文字中间的线
let range = NSRange(location:1, length: 3)
let lineColor = .red
let attributestr = str.lgl_setThroughLine(range, lineColor)
///获取设置行高以后的字符串的Size(高)
let lineHeight = 5
let font = UIFont.systemFont(ofSize: 14)
let maxW = 100
let size = str.lgl_getLineHeightSize(lineHeight, font, maxW)
4. NSRegularExpression+Extension
匹配
///匹配
let res:Bool = NSRegularExpression.lgl_isMatch(string: "判断的字符串", pattern: "正则字符串")
替换
let str = NSRegularExpression.lgl_replacement(string: "判断的字符串", replace: "要替换的字符串", pattern: "正则字符串")
LGLMethod
(会持续补充方法)
四、一些常见的方法包含在类 这里只列举几个,更多的请查看具体的LGLMethod中
///返回原始图片
let oriImage = LGLMethod.originalImage("image_name.png")
///等比缩放图片获取高度 imageW imageH realW具体使用时候的宽度
let H = LGLMethod.imageHeight(750, 300, 600)
///根据root控制器,返回当前控制器
let currentVC = LGLMethod.currentVC()
///根据颜色生成图片(UIImage)
let image = LGLMethod.imageWithColor(.red, CGSize(width:100, height:100))
///打开链接 OpenUrl
@discardableResult
LGLMethod.openUrl(url)
///拨打电话
LGLMethod.lgl_callPhone(number)
/// 跳转appStore 评论
LGLMethod.lgl_appStoreComment(appId)
LGLAlert
系统的提示弹框
四、 ///aler提示框 标题 内容 展示时间(默认1s)
LGLAlert.lgl_alert("提示", "提示内容", 2)
///ationSheet 提示框 标题 内容 展示时间(默认1s)
LGLAlert.lgl_ationSheet("提示", "提示内容", 2)
///一个按钮的filed弹窗 标题 内容 按钮标题 提示文字
LGLAlert.lgl_field("提示", "提示内容", "确定", "提示文字", handler:{(filedValue) in
print(filedValue)
})
LGLCrypt
加密工具
五、包含Md5加密,AESAES(128+CBC+PKCS7Padding),RSA加密解密、加签和验签
Md5
let md5Str = LGLCrypt.lgl_md5Encrypt("要加密的字符串")
加密和解密AES
///AES加密([UInt8]c形式的key和iv)
let key:[UInt8] //[UInt8]类型的key
let iv: [UInt8] //[UInt8]类型的iv
let aesEcrypt = LGLCrypt.lgl_aesEncrypt("要加密的字符串", key, iv)
///AES解密([UInt8]c形式的key和iv)
let aesDecrypt = LGLCrypt.lgl_aesDecrypt("要解密的字符串", key, iv)
///AES加密(字符串形式的key和iv)
let key = ""
let iv= ""
let aesEcrypt = LGLCrypt.lgl_aesEncryptStr("要加密的字符串",key, iv)
///AES解密(字符串形式的key和iv)
let aesDecrypt = LGLCrypt.lgl_aesDecryptStr("要解密的字符串", key, iv)
加密和解密RSA、加签和验签
/// RSA签名
let privateKey = ""
let privateKeychainTag = ""
let signStr = LGLCrypt.lgl_rsaSignWithSHA1("要签名字符串", privateKey, privateKeychainTag)
/// RSA验签
let publicKey = ""
//Bool
let res = LGLCrypt.lgl_rsaSignVerifyWithSHA1("原始字符串", "签名的字符串", publicKey, privateKeychainTag)
let publicKey = ""
let privateKeychainTag = ""
/// RSA公钥加密
let encryptStr = LGLCrypt.lgl_rsaEncrypt("要加密的字符串", publicKey,publicKeychainTag)
/// RSA私钥解密
let privateKey = ""
let decryptStr = LGLCrypt.lgl_rsaDecrypt("要解密的字符串", privateKey, privateKeychainTag:String)
/// RSA公钥解密
let decryptStr = LGLCrypt.lgl_rsaDecryptPublic("要解密的字符串", publicKey, publicKeychainTag)
作者
李国梁, 赵欣良
欢迎加入群聊:457236811 提供建议和交流
贡献者
期待您的贡献...
许可协议
LGLBaseKit遵循MIT许可协议。更多信息请参阅LICENSE文件。