项目小结
:布局的时候最后要用CGRectDivi..
:控制器的生命周期---->(init-->(当self.view==nil调用 loadView viewdidload)-->viewwillappear-->viewdidappear-->viewwilldisappear--->viewdiddisappear.
:布局的时候contentview中如果用输入控件最后放一个UIScrollview.
:推送的原理
:客户端向ASPNS注册推送消息
; 如果注册成功,ASPNS向客户端发送一个device token
: 客户端接受到APNS发过来的device token,发给服务器
:服务器吧消息和device token 一起发送给APSN,然后APSN想服务器推送信息。
:tableview要封装起来,做特效的时候,最好弄一个字典和缓存
viewwillAppear-->viewDidLayoutsubview--->viewDidAppear.
6:调用viewDidLayoutSubview函数
一下两个条件变化会调用viewDidlayOutSubview.
1:self.view的frame和bounds发生变化。
2:直接在self.view上添加子view.
因此性能考虑,子控件都在viewDidload添加控件最优方式
1:最好一次性在viewDidLoad中添加完所有子控件(避免都次调用viewDidlayoutSubview)
2:在不能一次要其他操作添加子控件,最好不要直接加到self.view上。可以加入到(scrollview-->contentview中)
ipad开发中总结
:当程序启动的时候是横屏显示的时候。其中在加载view的时候,调用viewDidLoad方法时,其中self.view的frame始终是竖屏的坐标,在viewDidLoad里面就加子控件的时候就要调用子控件的autoresizingMask属性 (一般调整基本控件的位置)
:当加载viewDidLoad之后调用ViewDidLayoutsubviews进行调整子控件位置。此时调整view准确的位置(一般调整tableview控件)(当横竖屏切换和在当前控制器view上加子view,该方法会被调用):一般在抽取相同部分的时候,父类要高度抽象,一般把发送请求给子类去实现。返回的结构又父类自己完成
:在使用tableview 一般都要进行封装,用view进行对tableview封装,最好不要直接使用。