iOS Tips
这里将记录iOS开发中的技巧,不定期更新内容
reloadData
调用 reloadData
方法并不会立即执行,****tableView**** 或者 ****collectionView**** 的 ****DataSource**** 中的方法。
KVO监听
利用KVO监听属性值的变化,如****SrollView****的****contentOffset****值的变化
通过KVO,比通过代理监听滑动改变****contentOffset****的值更加准确
//设置监听,这里用到了YYKit中对NSObject的扩展
baseScrollView.addObserverBlockForKeyPath("contentOffset") { (obj, old, new) in
// obj 被监听的对象
// old 旧的值
// new 新的值
}
去掉系统tabBar上方和NavgationBar下方的线
18:26:56.jpg
如上图,通过****Xcode****的工具可发现****TabBar****上方的黑色线是一个****UIImageView****。
我们可以通过获取该****UIImageVIew****设置该hidden = true
mainTabBarController.tabBar.subviews.forEach { (view) in
if view.isKindOfClass(UIImageView) && view.size.height < 2 {
view.hidden = true
}
}
18:41:43.jpg
上图,是****NavGationBar****的黑线。跟****TabBar****不同的是该黑线的****UIImageView****所在的位置关系。同理需要获取到该****UIImageView****设置hideen = true
一个string验证的封装
public enum StringCheck {
//对所需要的验证扩展
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)
}