精华内容
下载资源
问答
  • 时候,要记住iPhone试图加载life-cycle对应代理函数是有点头疼,特别是用Interface Builder构建界面情况下。这给如何找到最佳位置来添加自定义视图绘画/初始化/配置成为了一对于新手来说难题。...

      很多时候,要记住iPhone试图加载的life-cycle对应的代理函数是有点头疼的,特别是用Interface Builder构建界面的情况下。这给如何找到最佳的位置来添加自定义的视图绘画/初始化/配置成为了一个对于新手来说的难题。我把目前用到的可能会override的方法总结在这张图里。注意两点:

      1. 这是我目前遇到的case的总结。我不100%确定适用于所有情况
      2. 不是每个case都会用到这些方法的重载。我只是把它们放在了一张图里面而已

    展开全文
  • iPhone开发构建View时用到代理函数调用顺序 图解是本文要介绍内容,内容不,通过分析图我们能更好去学习,不说,我们先来看内容。 很时候,要记住iPhone试图加载 life-cycle 对应代理函数是有点头疼...

    转:点击打开链接

     

    iPhone开发 构建View 时用到代理函数调用顺序 图解是本文要介绍的内容,内容不多,通过分析图我们能更好的去学习,不多说,我们先来看内容。

    很多时候,要记住 iPhone 试图加载的 life-cycle 对应的代理函数是有点头疼的,特别是用 Interface Builder 构建界面的情况下。这给如何找到最佳的位置来添加自定义的视图绘画/初始化/配置成为了一个对于新手来说的难题。下面把目前用到的可能会 override 的方法总结在一张图里,方便新手查询。

    iPhone开发 构建View 时用到代理函数调用顺序 图解

    注意两点

    上图列出的是常见 case 总结,不适用于所有情况;

    不是每个 case 都一定会用到这些方法的重载

    小结:iPhone开发 构建View 时用到代理函数调用顺序 图解的内容介绍完了,希望本文对你有所帮助!


    转载于:https://www.cnblogs.com/forrestblog/p/5077443.html

    展开全文
  • 应用程序启动过程要包括代理创建,控制器加载和控制器view的加载,这其中有很关于生命周期方法,每方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写方法不恰当,就会遇到各种奇葩问题。...

      一个应用程序的启动过程要包括代理的创建,控制器的加载和控制器view的加载,这其中有很多关于生命周期的方法,每个方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写的方法不恰当,就会遇到各种奇葩问题。本文不怕麻烦的在几乎所有启动时要调用的方法里都用了 __FUNCTION__ 打印。结果还有有些地方出人意料的

    首先回顾一下应用程序的启动过程

    ①.先加载Main函数

    ②.在Main函数里的 UIApplicationMain方法中,创建Application对象 创建Application的Delegate对象

    ③.创建主循环,代理对象开始监听事件

    ④.启动完毕会调用 didFinishLaunching方法,并在这个方法中创建UIWindow

    ⑤.设置UIWindow的根控制器是谁

    ⑥.如果有storyboard,会根据info.plist中找到应用程序的入口storyboard并加载箭头所指的控制器

    ⑦.显示窗口

    本文考虑的时步骤③之后到步骤⑦结束时将要调用的方法

    其中有AppDelegate,ViewController,MainView(控制器的View),ChildView(子控件的View)的18个方法

    AppDelegate中的:

    1.application:didFinishLaunchingWithOptions:

    2.applicationDidBecomeActive:

    ViewController中的:

    3.loadView

    4.viewDidLoad

    5.load

    6.initialize

    7.viewWillAppear

    8.viewWillLayoutSubviews

    9.viewDidLayoutSubviews

    10.viewDidAppear

    MainView(控制器的View)中的:

    11.initWithCoder(如果没有storyboard就会调用initWithFrame,这里两种方法视为一种)

    12.awakeFromNib

    13.layoutSubviews

    14.drawRect

    ChildView(子控件View)中的:

    15.initWithCoder(如果没有storyboard就会调用initWithFrame,这里两种方法视为一种)

    16.awakeFromNib

    17.layoutSubviews

    18.drawRect

     

    那么问题来了,不往下看你可以把上面的十八个方法排个顺序么?

     

    下面的图是Xcode6.3的beta2版

    有时有变化也就是最后两个方法有点出入

     

    我更倾向于Xcode 6.1 觉得更科学 下面就是对各个方法的整理

    + (void)load;

    1.这是应用程序启动就会调用的方法,在这个方法里写的代码最先调用(董铂然原创)

    + (void)initialize;

    2.这个是需要用到本类时才调用,这个方法里一般写 设置导航控制器的主题啊 之类的,如果在后面的方法设置导航栏主题就晚了!(当然在上面的方法里也能写)

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions;

    3.这个方法里面会创建UIWindow,设置根控制器并展现,比如某些应用程序要加载授权页面也是在这加,也可以设置观察者,监听到通知切换根控制器

    ChildView - (instancetype)initWithCoder:(NSCoder*)aDecoder;

    4.这里反正我是万万没想到,childView的initwithcoder会在MainView的方法之前调用,父的都还没出来,就先整子控件? 有了解比较透彻的博友恳请告诉我谢谢。

    MainView - (instancetype)initWithCoder:(NSCoder*)aDecoder;

    5.就是关于应用程序的数据存储后的解档操作。

    MainView - (void)awakeFromNib;

    6.在这个方法里设置view的背景等一系列普通操作,不要写关于frame的还不准,在使用IB的时候才会涉及到此方法的使用,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。

    ChildView - (void)awakeFromNib

    7.子控件也有本方法,重写父类的方法。基本用法同上

    - (void)loadView;

    8.创建视图的层次结构,这里需要注意,在没有创建控制器的view的情况下不能直接写 self.view 因为self.view的底层是:

    if(_view == nil){

    _view = [self loadView]

    }

    所以这么写会直接造成死循环。

    如果重写这个loadView方法里面什么都不写,会显示黑屏。

    如果写了[super view]还要看前面的控制器在创建时是写的initWithNibName(指定了xib名字),还是写的普通的init。 如果是后者还是黑屏。

    如果不在这个方法中,init的底层是会调用initWithNibName的,如果名字是MainViewController,会先在项目中找MainView.xib 找不到会再找MainViewController.xib。

    - (void)viewDidLoad;

    9.卧槽,这个方法是当年用的最多的方法,但是在之后的开发中就会发现越来越不靠谱,很多东西都还没加载完毕,各种取值都不准确,很少在这里面写东西了。 这里只是把视图元件加载完成,还没有开始布局不要设置关于 frame 之类的属性!有时可能会出现差20个像素点等状况。

    - (void)viewWillAppear:(BOOL)animated;

    10.视图将要出现,这个方法用的非常多,比如如果要设置导航栏的setNavigationBarHiden:animate: 就必须要在这里写,才能完美契合,不卡跳。 还有很多比如监听屏幕旋转啦,

    viewWillTransitionToSize:可能要在本方法里再调一次,或者就是新到这个界面要reloadData或是自动下拉刷新等 都是写在本方法里。

    - (void)viewWillLayoutSubviews;

    11.视图将要布局子视图,苹果建议的设置界面布局属性的方法,这个方法和viewWillAppear里,系统的底层都是没有写任何代码的,也就是说这里面不写super 也是可以的

    MainView  - (void)layoutSubviews;

    12.在这个方法里一般设置子控件的frame,因为这里相当于是布局基本完成了,设置时取到的frame或者是self.bounds才最准,如果在awakeFromeNib里写会不准确 。还有这里要切记千万不能把super layoutSubviews忘了,可能最后都很难找到这个bug

    - (void)viewDidLayoutSubviews;

    13.这个方法我也是玩玩没想到,控制器的view的子控件还没有布局好呢,怎么这个控制器就已经说布局全部完成了?那后边的布局就不等了? 有独到见解的也恳请你告诉我,这其中苹果的意思到底是什么。

    ChildView - (void)layoutSubviews;

    14.控制器的子控件里的子控件的布局就在这里写了。

    MainView - (void)drawRect:(CGRect)rect;

    15. 因为默认所有额UI控件都是画上去的,在这一步就是把所有的东西画上去,有时候需要用到Quartz2D的知识的时候都是在这个方法里话,但也是要注意别忘了写super,不然系统原本的东西就都画不上来了,这里要建议尽可能使用贝塞尔路径画图形,因为系统默认的那个上下文画法有时可能会内存泄露。drawRect方法只能在加载时调用一次,如果后面还需要调用,比如下载进度的圆弧,需要一直刷帧,就要使用setNeedsDisplay来定时多次调用本方法

    ChildView - (void)drawRect:(CGRect)rect;

    16.view的子控件内部的画图方法,有时可以自己自定义label 中间带个删除线的(用来写打折前的原价) 就是在这里画根线 。

    - (void)viewDidAppear:(BOOL)animated;

    17.把上面的画图都画完了,这里就会显示,视图完全加载完成。在这里的操作可能就是设置页面的一些动画,或者是设置tableView,collectionView,QQ聊天页面啥的滚动到底部scrollToIndexPath之类的代码操作。

    - (void)applicationDidBecomeActive:(UIApplication *)application;

    18.最后这是AppDelegate的应用程序获取焦点方法,真正到了这里,才是所有东西全部加载完毕,应用程序整装待发保持最佳状态等待用户操作。这个方法中一般会写关于弹出键盘的方法,比如有的用户登录界面为了更好的用户体验,就让你在刚打开程序来到登录界面的时候,光标的焦点就自动在账号的文本框里闪烁,也就是设置账号文本框为第一响应者。键盘在页面加载完毕后从下方弹出,这种代码一般就在本方法写。

    转载于:https://www.cnblogs.com/itsApe/p/5154955.html

    展开全文
  • 时候,上海企业上海徐汇企业网站制作网站设计与制作要记住iPhone试图加载life-cycle上海闵行企业网站设计与制作对应代理函数是有点头疼,特别是用Interface Buil上海徐汇企业网站设计与制作der构建界面...

      很多时候,上海企业上海徐汇企业网站制作网站设计与制作要记住iPhone试图加载的life-cycle上海闵行企业网站设计与制作对应的代理函数是有点头疼的,特别是用Interface Buil上海徐汇企业网站设计与制作der构建界面的情况下。这给如何找到最佳的位置来添加自定义的视图绘画/初始化/配置成为了一个对于新手来说的难题。我把目前用到的可能会override的方法上海网站建设总结在这张图里。注意两点:

      1. 这是我目前遇到的case的总结。我不100%确定适用于所有情况
      2. 不是每个case都会用到这些方法的重载。我只是把它们放在了一张图里面而已

    转载于:https://www.cnblogs.com/waw/archive/2011/10/20/2219493.html

    展开全文
  • 应用程序启动过程要包括代理创建,控制器加载和控制器view的加载,这其中有很关于生命周期方法,每方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写方法不恰当,就会遇到各种奇葩问题。...
  • 应用程序启动过程要包括代理创建,控制器加载和控制器view的加载,这其中有很关于生命周期方法,每方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写方法不恰当,就会遇到各种奇葩问题。...
  • 应用程序启动过程要包括代理创建,控制器加载和控制器view的加载,这其中有很关于生命周期方法,每方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写方法不恰当,就会遇到各种奇葩问题。...
  • 应用程序启动过程要包括代理创建,控制器加载和控制器view的加载,这其中有很关于生命周期方法,每方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写方法不恰当,就会遇到各种奇葩问题。...
  • onMeasure、onLayout、dispatchDraw调用顺序

    千次阅读 2016-10-13 10:15:31
    在Android中view如何完成绘制这过程介绍了很,但是很理论化东西,最近重新整理一下,通俗讲解一下。  View绘制过程就好比你向银行贷款,  在执行onMeasure时候,好比银行告诉你大概贷款额度有多少?...
  • 多个AsyncTask执行顺序:并行or串行

    千次阅读 2016-12-07 13:17:08
    AsyncTask作为一个优秀封装,很多人都在用,可是我估计很多人并不清楚多个AsyncTask对象到底是串行执行,还是并行执行,如果是并行,那么最多同时执行几个异步任务呢? 源码面前无秘密,我们看一下源代码就...
  • 飘逸python - inspect谁调用了我

    千次阅读 2015-07-21 14:40:25
    这时如果有清晰的调用脉络调试就容易了。 利用inspect模块getframeinfo方法来实现这需求。 上代码感受下。 [python] view plaincopy import inspect  def foo():   ...
  • 个view如何同时响应onTouch和onClick事件,这种情况很,但是在网上搜了很长时间,大多数都是讲解如何区分onTouchEvent和onClick,onLongClick的调用顺序和流程.但是都没有讲到如何让onTouch事件和onClick事件共存.也...
  • viewDidLoad被提前调用

    2016-05-27 14:52:11
    今天写项目时候发现了一非常奇怪问题,我一度认为可能是我 Xcode 出了 bug。 先来猜猜下面代码执行顺序?...这就导致了一问题:viewModel 请求不到数据,因为走到第 4 步时候,view
  • Task三列子分享

    2017-04-14 14:29:18
    这次要分享是C#Task任务...1.顺序任务执行View Code 上面代码中也备注了一些文字说明,其中有关键词语及意思如下: .Task.Factory.StartNew:创建一Task实例,创建后自动开启,无需在调用Start; ...
  • 如何调整底部的所有链接出现的顺序?我们都知道在magento中像about us这样的页面是通过cms 来实现的。但是通常我没只是做了一cms page。而cms page中又不能调用php代码。似乎没有办法进行翻译。不过我们可以通过...
  • 在本例子中,以两小动物为例,上层为cat,下层为rabbit这两小动物为自定义的view,可以根据点击位置实时更改其位置。 首先就是触摸监听事件设置。 setOnTouchListener中OnTouch方法。 **注意:**该方法...
  • 今天遇到一个问题,在ListView的时候,要在首部加一个... boolean isSelectable)方法,这个方法可以把一个view放置到Listview的顶部显示,也可以多次调用,使得多个view按照添加的顺序,依次排列在ListView的顶部显示。
  • 按照正确的顺序使用AlarmOn和AlarmPrintOff命令 11-61 禁止报警监视 11-61 禁止标签的报警监视 11-61 查看禁止的标签 11-61 使用禁止报警列表 11-62 更的FactoryTalk View命令 11-62 启动和停止报警监视 11-63 在...
  • 调用ListView.addHeaderView(view)方法在ListView上方添加其他组件,调用,则按顺序从上向下罗列  其view是一独立布局文件 如ListView.addHeaderView(View1);ListView.addHeaderView(View2); 则View1...
  • listview显示问题 header

    千次阅读 2016-12-12 17:39:57
    ListView:public void addFooterView() public... 此addFooterView方法可以被调用多次, 新增的尾部View会按照他们添加的顺序显示在页面上(HeaderView同理).上述两种方法调用之后,listView的数据记录总数也会相应
  • PHPMVC编程思想目前已经被广泛使用于各种大型项目开发,很成熟MVC框架也逐渐被大家所熟知并被广泛应用于各类项目中,比较常见如ThinkPHP、codeigniter、Symfony、yii、...如此说来,程序执行顺序是C-V-M
  • MFC程序框架剖析

    2015-03-05 09:53:19
    紧接着就会有一个判断,用来确定该链表中是否只有一项,如果链表中保存了多个文档模版,则会弹出一个对话框,来让我们选择到底是使用哪一套文档模版来构建应用程序,相信大家也都见到过这种情况吧。对了,还有一点要...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 168
精华内容 67
关键字:

多个view调用的顺序是