zoukankan      html  css  js  c++  java
  • iOS学习--第五天杂记

      先解决下昨天遗留的问题,晚上回去没看啊,a little tired.

    1. appDelegate.h与appDelegate.m的作用

    2. 关于UIVeiwController的有关知识点学习

    3. UITabBarController

    4. controller文件中@protocol与@optional属性

    5. UIController

    --------------------(我是分割线)

    1. 先说下main.m这个文件

    #import <UIKit/UIKit.h>
    #import "AppDelegate.h"
    int main(int argc, char * argv[]) {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }

    默认的ios程序都是从main函数开始执行的,它就包含了一个方法。方法内部有四个参数。

    关于参数的作用可以按住option键查看。

    argc与argv:参数个数与参数内容。

    第三个参数代表UIApplication类(或子类)字符串,这个参数默认为nil则等价于NSStringFromClass([UIApplication class])。UIApplication是单例模式,一个应用程序只有一个UIApplication对象或子对象;

    第四个参数是UIApplication的代理类字符串,默认生成的是AppDelegate类。

    AppDelegate类的作用:这个类主要用于监听整个应用程序生命周期的各个事件。当UIApplication运行过程中引发了某个事件之后会调用代理中对应的方法。

    方法执行过程 --也就是说当执行UIApplicationMain方法后这个方法会根据第三个参数创建对应的UIApplication对象。这个对象会根据第四个参数AppDelegate创建并制定此对象为UIApplication的代理;同时UIApplication会开启一个消息循环不断监听应用程序的各个活动,当应用程序生命周期发生改变UIApplication就会调用代理对应的方法。

    应用程序UIApplication是通过代理与外部交互的。

    AppDelegate.m这个类中定义了应用程序生命周期中各个事件的执行方法:

    1. didFinishLaunchingWithOptions:程序启动之后执行,只有在第一次程序启动后才执行,以后不再执行。

    2. applicationWillResignActive: 程序将要被激活时(获得焦点)执行。

    3. applicationDidEnterBackground: 程序进入后台后执行(先失去焦点再进入后台)。

    4. applicationWillEnterForeground: 程序将要进入前台时执行。

    5. applicationDidBecomeActive: 程序被激活(获得焦点)后执行(先进入前台再获得焦点)。

    6. applicationWillTerminate: 程序在终止时执行。

    至此AppDelegate.m中的常用方法已经了解。那对于文件结构可以再做一个总结:

    1. AppDelegate(.h/.m): 应用程序代理,主要用于监听整个应用程序生命周期中各个阶段的事件。

    2. ViewController(.h/.m): 视图控制器,主要负责管理UIView的生命周期,负责UIView之间的切换,对UIView事件进行监听等。

    3. Main.storyboard: 界面布局文件,承载对应UIView的视图控件。

    4. Images.xcassets: 应用程序图像资源文件。

    5. Info.plist:应用程序配置文件。

    6. Main.m:应用程序入口函数文件。

    -----------------------(我是分割线)

    2. UIViewController

    视图控制器。 我不禁想到了UIView,在网上查了下。看见扯了这么多,完全不是自己想要了解的。

    本人觉得UIView它就是界面上所有可视化控件的父类,譬如UILabel,UIWindow等。而UIViewController了,它却是一个视图控制器。在我看来这个文件里面它是要实现某些方法滴。

    不过UIView的方法值得一提:

    一个UIView里面可以包含许多的Subview,即其它的UIView。

    1. 新增和移除SubView

    [Subview removeFromSuperview] //将Subview从当前的UIView中移除

    [UIView addSubview:Subview] //为UIView增加一个Subview

    2. Subview的移动

    [UIView bringSubviewToFront:Subview] //将Subview往前移动一个图层(与前一个图层对调位置)。

    [UIView sendSubviewToBack:Subview]//将Subview往后移动一个图层。

    3. 使用索引交换两个Subview的图层层级

    [UIView exchangeSubviewAtIndex: indexA withSubviewAtIndex: indexB]//交换两个图层

    4. 获取Subview的索引

    NSInteger index = [[UIView subviews] indexOfObject: SubviewName];

    5. 为Subview加上标记

    [Subview setTag:NSInteger]//加上标记

    [UIView viewWithTag:NSInteger]//通过标记得到view 返回值为UIView

    6. 取出UIView中所有的Subview,并以由后往前的顺序列出这些Subview。

    [UIView subviews]

    方法是介绍不完滴,说了这些当前然并卵的东西,我该进入正题--UIViewController

    看了网上长篇短篇的论述,我决定看下UIViewController的官方文档。看半个小时能否看完。

    先声明这一系列博文只为记录自己学习的一个过程。

    我只想说我想如饥似渴的参读官方文档,可是无奈文档涉及到的知识点实在太多。所以我只能说第一波高地没能上成。

    这篇UIViewController中个方法调用顺序及功能详解应该是个好文章,先留着。

    不行啊。还是得找时间看官方文档.

    --------------------(我是分割线)

  • 相关阅读:
    软考相关网站汇总
    教育界常用网站汇总
    vue实现选中li变色--小技巧
    vue前端路由的两种模式,hash与history的区别
    element中级联选择器动态加载数据 递归的思想(数据量过于庞大,后端不一次性把数据返回)
    关于echarts和高德地图使用的一些小细节
    Vue中的$set的使用 (为对象设置属性)
    高德地图根据地址获取经纬度
    vue强制刷新组件 (用keep-alive怎么都不生效,可能是因为这是组件,没涉及到路由),相当于每次重新初始化组件
    webpack
  • 原文地址:https://www.cnblogs.com/wmx-rj/p/4729469.html
Copyright © 2011-2022 走看看