簡要
objective c
有優秀又好用的PrefixHeader
PrefixHeader
的功用就是可以
存放一些全域變數 給任何Class
呼叫使用
也可以使用來宣告APP
所需到的文件
方便又好用 但轉變好Swift
似乎因為Class
與Class
之間變得開放
使得PrefixHeader
沒有跟著過來
想使用的話 網路上只有找到混編譯
但我實在沒辦法接受語言不一致
那我們來試試看手刻一個自己的PrefixHeader
順便寫BaseController
PrefixHeader
PrefixHeader
基本上放的全域變數
都是固定的參數 為了要簡化程式碼的長度
優化程式的可識別度 把一些常用攏長的語法
放置於PrefixHeader
方便呼叫
也可以將APP色系
統一設置於PrefixHeader
這樣如果要更換顏色風格
或當作樣版的化
快速更換加速開發 讚讚
OC 寫法
PrefixHeader
基本使用 可以使用#define
宣告
#define KScreenWidth ([[UIScreen mainScreen] bounds].size.width)
#define KScreenHeight [[UIScreen mainScreen] bounds].size.height
#define kScreenBounds [UIScreen mainScreen].bounds
other class
其他class
就可以不用宣告直接使用該變數
NSLog(@"%f",KScreenWidth);
NSLog(@"%f",KScreenHeight);
PrefixHeader
也可以帶入參數
來查看該變數是否為空質
#define ValidNull(f) (f!=nil && [f isKindOfClass:[NSNull class]])
other class
這樣可以以防一些api
回傳空質時
造成APP
閃退
credits = ValidNull(credits)?@"0":credits;
目標在Swift上 做到這兩點
就可以滿足現階段需求
Swift
首先建立一個PrefixHeader.swift
設置一些常用的public let
變數
PrefixHeader
import Foundation
import UIKit
public let KScreenWidth: CGFloat = UIScreen.main.bounds.size.width
public let KScreenHeight: CGFloat = UIScreen.main.bounds.size.height
public let kScreenBounds: CGRect = UIScreen.main.bounds
other class
print(KScreenWidth)
print(KScreenHeight)
print(kScreenBounds)
至於回傳值我打算寫個public func
應該就可以達成第二的目標
PrefixHeader
public func ValidInt(value: Any) -> Bool {return value is Int}
other class
if ValidInt(value:1) {
print("yes")
}else{
print("no")
}
輕鬆就完成兩項目標
當然要添加什麼自己決定
以上都可以換成自己想要的
BaseController
BaseController
應該是許多人都會運用到的
可以先在BaseController
寫好所需的功能
在給需要的Class繼承
就可以無痛使用父類別功能
我這邊習慣在viewDidLoad分別執行
– 初始化變量
– UI創建
– 加載數據
依序執行func
讓viewDidload
更整齊一點
也不會太多程式碼集中在同一個位置
BaseViewController
首先創建一個Swift檔
類別選擇UIViewController
接著在viewDidload
新增以上三個func
import UIKit
class JGBaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 1、初始化變量
self.initIMVariables()
// 2、UI創建
self.initIMUI()
// 3、加載數據
self.initIMData()
}
/**
* 初始化變量
*/
func initIMVariables() {
}
/**
* UI創建
*/
func initIMUI() {
}
/**
* 加載數據
*/
func initIMData() {
}
}
*** 子類別Class ***
子類別Class 記得先要繼承 BaseController
別且使用override func添加剛剛三個父類別func
class Test2ViewController: JGBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - 供子類重寫
/**
* 初始化變量
*/
override func initIMVariables() {
super.initIMVariables()
print("初始化變量")
}
/**
* UI創建
*/
override func initIMUI() {
super.initIMUI()
print("UI創建")
}
/**
* 加載數據
*/
override func initIMData() {
super.initIMData()
print("加載數據")
}
}
在子類別viewDidLoad
時就會順序
執行三個func
到時候就可以依類別
填入適當的程式碼在func
就可以了
** 執行結果 **
初始化變量
UI創建
加載數據