iOS 开发中的Tips

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下方的线

iOS 开发中的Tips_第1张图片
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
   }
  }

iOS 开发中的Tips_第2张图片
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)
 
}

你可能感兴趣的:(iOS 开发中的Tips)