因?yàn)閟witf沒有沒有.h和.pch文件也沒有宏
我們有需要一些全局的宏和全局方法
不用擔(dān)心,因?yàn)閟witf不需要通過.h文件調(diào)用類
所以可以直接調(diào)用其他的類
首先我們先新建一個ToolClass的工具類
然后在這其中添加一些全局的宏
因?yàn)閟witf主要分為變量和常量
所以這些“宏”要分清變量和常量
如果是常量的話直接用let定義就好了
變量的話是不可以用var去定義的
比如獲取屏幕的寬高就是常量了
全局宏
import UIKit//注意要寫在這個下面
/**
屏幕的寬高
*/
let YBJ_WIDTH = UIScreen.main.bounds.size.width
let YBJ_HEIGHT = UIScreen.main.bounds.size.height
獲取了屏幕的寬高后我們要適配的話就是變量
變量的話就需要用方法去返回變量
/**
蘋果6和6s的手機(jī)適配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)
然后就是我們經(jīng)常會用到的顏色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)
}
/**
應(yīng)用主題背景顏色
*/
let VC_Color = RGBA(r: 255, b: 253, g: 249, a: 1)
以上這些是屬于“宏”的定義
接下來我們要寫一寫全局的方法
好多APP都用到手機(jī)號碼的判斷以及密碼的判斷
因?yàn)閟witf對bool的要求比較嚴(yán)格只能用true 和 false 來區(qū)分真和假
大家在寫的時候就要注意了
全局方法
/**
手機(jī)號碼正則
*/
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為不為純數(shù)字的密碼
*/
func UserPassWorld(pass:String) -> Bool {
if pass.count >= 9 && pass.count <= 16 && !isPurnInt(string: pass) {
return true;
}else{
return false;
}
}
///判斷密碼手否為純數(shù)字
func isPurnInt(string: String) -> Bool {
let scan: Scanner = Scanner(string: string)
var val:Int = 0
return scan.scanInt(&val) && scan.isAtEnd
}