iOS开发的代码结构

Posted by Lian YuTao on 2015-09-02

0.iOS页面frame与数据

说到MVC,对于iOS开发者来说再熟悉不过了。MVC的程序开发模式,让开发变的更有条理,感谢那些为程序设计做出贡献的牛人

MVC在这里就不深入说了,我想说说别的,例如在开发中我们会发现,有的程序在没有网络的情况下是一片白色的页面什么都看不到(数据从网络获取),而有的程序则不同,虽然没有网络,但是会有页面的结构和占位图片等,

对于用户来说,肯定第二种的更友好一些。而这样的结构在开发时应该是让数据作为页面的一个属性,在数据属性值没有值时,构造页面,在这个属性有值的时候去重构界面,或者值改变的时候去重构界面,

说道这里我们会想到两个常用的方法

1
- (void)layoutSubviews
1
- (void)setNeedsLayout

我们来看看官方文档怎么解释这两个方法。

红框里的话的意思是,“你不能直接调用这个方法。假如你想强制更新布局,需要调用setNeedLayout而不是去画页面更新,假如你想立即更新你的视图,可以调用layoutIfNeed”

1.怎样创建一个数据与frame分离的view

好多同学在刚开始开发时,所有的代码都在viewDidLoad()方法中里,好些的将不同的view的初始化分成几个方法,不过仅仅这样还是远不够的,安装MVC的思想,我们可以分成controller,view,model但是view的创建往往会写的很混乱。

controller是管理一个页面的控制器,view就是这个控制器里所有被显示的东西。
例如我们创建一个view,假设这个view里只有一个简单的UIImageView,(数据多的话同理)我们需要从网络获取一个url而显示这张图片。如果网络没有数据我们也要现实这个imageView的结构,并且显示一个默认的图片。

1.创建一个名为TestView的view,然后创建一个UIImageView上需要显示图像的url

2.我们应该怎么创建Test,通常我们会重写他的init(或者initWithFrame:)方法