- edgesForExtendedLayout 設(shè)置為 None
-
OC
self.edgesForExtendedLayout = UIRectEdgeNone; -
Swift
// Swift 沒有 None 選項(xiàng),通過初始化設(shè)置 self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0) 或 edgesForExtendedLayout = UIRectEdge.init(rawValue: 0) // 編碼規(guī)范(風(fēng)格)區(qū)別
由于導(dǎo)航欄是半透明的,設(shè)置為 None 時(shí)會(huì)顯示黑色,需要設(shè)置self.navigationController.navigationBar.translucent = NO; 或navigationController?.navigationBar.isTranslucent = false
- 自定義 UIView 底層支持圖層(CALayer),這里以設(shè)置為 AVPlayerLayer 為例
-
OC
// 重寫類方法 + (Class)layerClass { return [AVPlayerLayer class] } // 在需要的地方設(shè)置圖層的相關(guān)的屬性,avPlayer = AVPlayer() [(AVPlayerLayer *)[self layer] setPlayer:avPlayer]; -
Swift
override class var layerClass: AnyClass { get { return AVPlayerLayer.self } } // 設(shè)置屬性 guard let avPlayerLayer = self.layer as? AVPlayerLayer else { return } avPlayerLayer.player = avPlayer
- 通過類名字符串初始化對(duì)象,以 HomeViewController 為例
-
OC
NSString *className = @"HomeViewController"; HomeViewController *homeViewController = [[NSClassFromString(className) alloc] init]; -
Swift
let classString = "HomeViewController" let className = Bundle.main.infoDictionary!["CFBundleName"] as! String + "." + classString // 這里項(xiàng)目名不能帶有下劃線 “_” 或 “*” 等特殊字符 let viewControllerClass = NSClassFromString(className) as! UIViewController.Type let homeViewController = viewControllerClass.init()
- 單例模式實(shí)現(xiàn)
-
OC
static Singleton* _instance = nil; + (instancetype) shareInstance { static dispatch_once_t onceToken ; dispatch_once(&onceToken, ^{ _instance = [[self alloc] init] ; }) ; return _instance ; } -
Swift
final class Singleton { private init() { } static let shared = Singleton() }
- 獲取字典中的鍵、值
-
OC
NSDictionary *dictionary = [@"key": @"value"]; NSArray *keys = dictionary.allKeys; -
Swift
let dictionary = ["key": "value"] let keys = Array(dictionary.keys) // 這里 dictionary.keys 不再是數(shù)組,需要再轉(zhuǎn)換
未完待續(xù),歡迎補(bǔ)充