最坑的是什么呢?
新建controller自定义class的附带xib形式的勿选择自带创建的xib(勿勾选also create xib file),选择创建一个empty interface view 将其关联,不然会出现 no view set的报错如何更改xib已经布置好的元素
awakeformnib 初始化必须是xi和initnibname 会有 是xib加载 到界面上最开始的位置,设置圆角什么的 layer效果就可以在这里写.如果想自定义能在界面上调的view需要用@IBInspectable 标示,@IBDesignable 标示class 具体可以学学TextFiledEffects框架的设计
storyboard开发tips
1.为每个单独的界面建立一个单独的storyboard虽然storyboard很早就出来了但是貌似在多人协同开发时体现的并不是很友好,storyboard使用这种方式可以快速看到清晰的流程,便于我们把控业务的流程。而且在做界面效果可以节约很大的时间.绕开那些烦人的布局,第三方约束布局库吧!
2.storyboard文件与相关的ViewController subclass使用相同的名称,那样会更清晰,也防止出错.
let storyboard = UIStoryboard(name: "HomeViewController", bundle: nil)
let homeViewController = storyboard.instantiateViewController(withIdentifier: “HomeViewController”) as? HomeViewController
在此基础上都可以在分类的ViewController 建立一个static 静态快速获取的类 可以参照
class HomeViewController: UIViewController {
static func storyboardInstance() -> HomeViewController? {
let storyboard = UIStoryboard(name: String.className(self),
bundle: nil)//这样就能使用这种方式来避免各种类名写错等行为了
return
storyboard.instantiateInitialViewController() as?
HomeViewController
}
}
使用起来就统一的可以这样
let homeViewController = HomeViewController.StoryBoardInstance()
类似nib的方式可以如法炮制
class LoginView: UIView {
static func nibInstance() -> LoginView? {
if let loginView =
Bundle.mainBundle.loadNibNamed(String.className(self),
owner: nil, options: nil)?.first as?
LoginView {
return loginView
}
return nil
}
}
3.少用segue,界面跳转直接用添加时间的方式对其跳转
4.涉及到界面跨层次跳转的,尽量自己用nav的方式,不用segue的方式去跳转
if let nvc = navigationController {
nvc.popViewController(animated: true)
} else {
// otherwise, dismiss it
dismiss(animated: true, completion: nil)
}