因为switf没有没有.h和.pch文件也没有宏
我们有需要一些全局的宏和全局方法
不用担心,因为switf不需要通过.h文件调用类
所以可以直接调用其他的类
首先我们先新建一个ToolClass的工具类
然后在这其中添加一些全局的宏
因为switf主要分为变量和常量
所以这些“宏”要分清变量和常量
如果是常量的话直接用let定义就好了
变量的话是不可以用var去定义的
比如获取屏幕的宽高就是常量了
全局宏
import UIKit//注意要写在这个下面
/**
屏幕的宽高
*/
let YBJ_WIDTH = UIScreen.main.bounds.size.width
let YBJ_HEIGHT = UIScreen.main.bounds.size.height
获取了屏幕的宽高后我们要适配的话就是变量
变量的话就需要用方法去返回变量
/**
苹果6和6s的手机适配4.7英寸
*/
func WIDTH6(f:CGFloat) -> CGFloat {
return ((f/375.00)/YBJ_WIDTH)
}
func HEIGHT6(f:CGFloat) -> CGFloat {
return ((f/375.00)/YBJ_HEIGHT)
}
func FRAME6(x:CGFloat , y:CGFloat , width:CGFloat , height:CGFloat) -> CGRect {
return CGRect(x: WIDTH6(f: x) , y: WIDTH6(f: y) , width: WIDTH6(f: width) , height: WIDTH6(f: height))
}
iPhone X 的适配(常量)
iPhone X 的话要通过获取屏幕的高度判断
/**
iPhone X 的 TabBar 和 NavBar 的适配
*/
let IS_IPHONE_X = ((YBJ_HEIGHT == 812.00) ? true : false)
let Height_NavContentBar = 44.00
let Height_StatusBar = ((IS_IPHONE_X == true) ? 44.00 : 20.00)
let Height_NavBar = ((IS_IPHONE_X == true) ? 88.00 : 64.00)
let Height_TabBar = ((IS_IPHONE_X == true) ? 83.00 : 49.00)
然后就是我们经常会用到的颜色RBGA了
/**
背景颜色RBGA
*/
func RGBA(r:CGFloat , b:CGFloat , g:CGFloat , a:CGFloat) -> UIColor {
return UIColor(red: (r)/255.0, green: (b)/255.0, blue: (g)/255.0, alpha: a)
}
/**
应用主题背景颜色
*/
let VC_Color = RGBA(r: 255, b: 253, g: 249, a: 1)
以上这些是属于“宏”的定义
接下来我们要写一写全局的方法
好多APP都用到手机号码的判断以及密码的判断
因为switf对bool的要求比较严格只能用true 和 false 来区分真和假
大家在写的时候就要注意了
全局方法
/**
手机号码正则
*/
func MobilePhoneNumber(phone:String) -> Bool {
let mobile = "^1((3[0-9]|4[57]|5[0-35-9]|7[0678]|8[0-9])\\d{8}$)"
let CM = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
let CU = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
let CT = "(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)";
let regextestmobile = NSPredicate(format: "SELF MATCHES %@",mobile)
let regextestcm = NSPredicate(format: "SELF MATCHES %@",CM )
let regextestcu = NSPredicate(format: "SELF MATCHES %@" ,CU)
let regextestct = NSPredicate(format: "SELF MATCHES %@" ,CT)
if ((regextestmobile.evaluate(with: phone) == true)
|| (regextestcm.evaluate(with: phone) == true)
|| (regextestct.evaluate(with: phone) == true)
|| (regextestcu.evaluate(with: phone) == true)) {
return true
}
return false
}
/**
9~16为不为纯数字的密码
*/
func UserPassWorld(pass:String) -> Bool {
if pass.count >= 9 && pass.count <= 16 && !isPurnInt(string: pass) {
return true;
}else{
return false;
}
}
///判断密码手否为纯数字
func isPurnInt(string: String) -> Bool {
let scan: Scanner = Scanner(string: string)
var val:Int = 0
return scan.scanInt(&val) && scan.isAtEnd
}
网友评论