关于iOS中View层的一些想法

关于框架的一些杂谈


关于view层的代码规范:

  • 1.提高view层的可读性和可维护性
  • 2.确保传承

viewController的代码应该差不多是下面这样的,不在viewDidLoad里面初始化view然后再add,在viewDidLoad里面只添加addsubview,在viewWillAppear里面做一些布局的事情。而属性的初始化,完全可以在getter里面实现。这样在属性以及控件很多的时候还能保持代码整齐。view的初始化都放在getter放在里面去了。可以使用懒加载创建控件

关于iOS中View层的一些想法_第1张图片
参考图片

getter和setter方法放在最后面

因为一个viewcontroller可能有很多的view,如果getter和setter放在前面,会影响代码的课阅读性。
所以我一般写代码的时候按照顺序来分配代码块的位置,先是life cycle,然后是Delegate方法实现,然后是event response,然后才是getters and setters。这样后来者阅读代码时就能省力很多。

delegate写到一个地方去

所有的delegate写到一起

event response专门开一个代码区域用来处理事件

所有button、gestureRecognizer的响应事件都放在这个区域里面,不要到处乱放。

private methods 一些私有方法

一般都是些通用的方法,比如图片压缩,日期装换等方法。这种小功能要么把它写成一个category,要么把他做成一个模块。
ViewController基本上是大部分业务的载体,本身代码已经相当复杂,所以跟业务关联不大的东西能不放在ViewController里面就不要放。另外一点,这个private method的功能这时候只是你用得到,但是将来说不定别的地方也会用到,一开始就独立出来,有利于将来的代码复用。

PS:其实在viewWillAppear这里改变UI元素不是很可靠,Autolayout发生在viewWillAppear之后,严格来说这里通常不做视图位置的修改,而用来更新Form数据。改变位置可以放在viewWilllayoutSubview或者didLayoutSubview里,而且在viewDidLayoutSubview确定UI位置关系之后设置autoLayout比较稳妥。另外,viewWillAppear在每次页面即将显示都会调用,viewWillLayoutSubviews虽然在lifeCycle里调用顺序在viewWillAppear之后,但是只有在页面元素需要调整时才会调用,避免了Constraints的重复添加

你可能感兴趣的:(关于iOS中View层的一些想法)