iOS Tips
這里將記錄iOS開(kāi)發(fā)中的技巧菠镇,不定期更新內(nèi)容
reloadData
調(diào)用 reloadData
方法并不會(huì)立即執(zhí)行噪奄,****tableView**** 或者 ****collectionView**** 的 ****DataSource**** 中的方法。
KVO監(jiān)聽(tīng)
利用KVO監(jiān)聽(tīng)屬性值的變化而钞,如****SrollView****的****contentOffset****值的變化
通過(guò)KVO,比通過(guò)代理監(jiān)聽(tīng)滑動(dòng)改變****contentOffset****的值更加準(zhǔn)確
//設(shè)置監(jiān)聽(tīng),這里用到了YYKit中對(duì)NSObject的擴(kuò)展
baseScrollView.addObserverBlockForKeyPath("contentOffset") { (obj, old, new) in
// obj 被監(jiān)聽(tīng)的對(duì)象
// old 舊的值
// new 新的值
}
去掉系統(tǒng)tabBar上方和NavgationBar下方的線
如上圖瞭郑,通過(guò)****Xcode****的工具可發(fā)現(xiàn)****TabBar****上方的黑色線是一個(gè)****UIImageView****。
我們可以通過(guò)獲取該****UIImageVIew****設(shè)置該hidden = true
mainTabBarController.tabBar.subviews.forEach { (view) in
if view.isKindOfClass(UIImageView) && view.size.height < 2 {
view.hidden = true
}
}
上圖鸭你,是****NavGationBar****的黑線屈张。跟****TabBar****不同的是該黑線的****UIImageView****所在的位置關(guān)系擒权。同理需要獲取到該****UIImageView****設(shè)置hideen = true
一個(gè)string驗(yàn)證的封裝
public enum StringCheck {
//對(duì)所需要的驗(yàn)證擴(kuò)展
case MobilePhone
public var regularString: String {
switch self {
case .MobilePhone:
return "^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$"
}
}
}
func stringCheck(string: String, type: StringCheck) -> Bool {
let stringCheck = type.regularString
let regextest = NSPredicate(format: "SELF MATCHES %@", stringCheck)
return regextest.evaluateWithObject(string)
}