-1 self用法
self:
1> 閉包中
2> 在函數(shù)中和局部變量有歧義
3> 在懶加載中
00屬性的創(chuàng)建
var childVc : [UIViewController] //如果沒(méi)有初始化就在viewload中進(jìn)行賦值操作
var parentVc : UIViewController ?//如果沒(méi)有初始化就在viewload中進(jìn)行賦值操作
var delegate : HYContentViewDelegate?
var startOffset : CGFloat = 0
var isForbidDelegate : Bool = false
01? as用法
as--當(dāng)自己知道容器中的類的類型但編譯器不知道就用這轉(zhuǎn)化
guard let targetLable = ges.view as? UILabel else {
return
}
02 參數(shù)中參數(shù)帶下劃線? 不帶下劃線的區(qū)別
參數(shù)帶下劃線? 不帶下劃線的區(qū)別? 有下劃線調(diào)用的時(shí)候 第一個(gè)不會(huì)顯示類型--一般代理和點(diǎn)擊方法中使用
03代理
代理的寫(xiě)法 代理默認(rèn)是必須實(shí)現(xiàn)的? 可選的話 optionsal @objc? 方法和協(xié)議都要加
protocol 名稱 : class {
func HYContentView(_ contentView : HYContentView, contenIndex : Int)
func contentView(_ contentView : HYContentView ,sourceIndex : Int ,targetIndex : Int , progress : CGFloat)
}
weak ?var delegate : HYContentViewDelegate?
04 懶加載
fileprivate lazy var collectionView : UICollectionView = {
一般都會(huì)設(shè)置一些屬性
創(chuàng)建一個(gè) ?返回 ?return
}()
fileprivate lazy var Attributes : [UICollectionViewLayoutAttributes] = [UICollectionViewLayoutAttributes]()
05
extension 使用
可以以在當(dāng)前類中使用 ? 也可擴(kuò)充系統(tǒng)的類方法或?qū)ο蠓椒?/p>
extension UIColor {
在extension中擴(kuò)充構(gòu)造函數(shù), 只能擴(kuò)充便利構(gòu)造函數(shù)
1> 在init前需要加上關(guān)鍵字convenience
2> 在自定義的構(gòu)造函數(shù)內(nèi)部, 必須明確的通過(guò)self.init()調(diào)用其他的構(gòu)造函
convenience init(r : CGFloat, g : CGFloat, b : CGFloat, alpha : CGFloat = 1.0) {
self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)
}
//? 計(jì)算屬性: 只讀屬性----也就是類方法
class var randomColor : UIColor {
return UIColor(r: CGFloat(arc4random_uniform(256)), g : CGFloat(arc4random_uniform(256)), b : CGFloat(arc4random_uniform(256)))
}
6 string-->NSString
// 判斷是否以#開(kāi)頭---如果string不好用就轉(zhuǎn)成NSString再調(diào)用方法
if (hexString.hasPrefix("#")) {
// as 將String類型轉(zhuǎn)成NSString---
hexString = (hexString as NSString).substring(from: 1)}
7元祖的使用
7.1元祖作為返回值
func getRGB() -> (CGFloat,CGFloat,CGFloat) {
var red :CGFloat = 0
var green : CGFloat = 0
var blue :CGFloat = 0
getRed(&red, green: &green, blue: &blue, alpha: nil)
return(red * 255,green*255,blue*255)
}
7.2元祖重命名
取值可以 .0 .1 .2 也可以.red ?.green .blue
typealias ColorRGB = (red : CGFloat, green : CGFloat, blue : CGFloat)
8.瀑布流原理
01.collectionView實(shí)現(xiàn)瀑布流
02.自定義layout布局 重寫(xiě)3個(gè)方法 (1.準(zhǔn)備布局 ? 2.返回布局 ? 3.設(shè)置滾動(dòng)區(qū)域)
03
fileprivate lazy var Attributes : [UICollectionViewLayoutAttributes] = [UICollectionViewLayoutAttributes]()
遍歷cell個(gè)數(shù)的數(shù)組
每一個(gè)Attribute根據(jù)indexPath 對(duì)應(yīng)一個(gè)cell 設(shè)置Attribute的尺寸--添加到數(shù)組中--返回就是每個(gè)cell的frame
9如果代碼中有? ??
解決辦法: 1. if ? ? 2.guard ??