一、UIKit的坐标系 1.在UIKit中,坐标系的原点(0,0)在左上角,x值向右正向延伸,y值向下正向延伸 2.center,指的就是控件中心点的坐标 frame,指的就是控件左上角的坐标 在整个屏幕上,左上角,它是(0,0) 一个元素的frame的x和y,就是控件左上角的那1点 center的x和y,就是控件中心点的坐标 二、动态创建控件 1.刚才给大家讲的案例,控件是不是都是1个1个拽上来的 是不是有1个storyboard以后,然后通过我们这个控件库里面,在控件库里面,我们把每1个控件,都是1个1个拽上来的 那么,现在呢,我们不要一个一个拽上来了 我们完全自己写代码 把1个1个控件,给它动态去加上来 通过代码来实现, 2.我们先新建1个项目,看一下,这个控制器里面,是不是什么都没有吧 但是你一运行,看到什么了,看到一个按钮吧,这个按钮上有上一篇文章咱们创建的图片, 这个按钮中间,还有红色的“点我啊”三个字 这个按钮,点击时还有事件,是换了一张图片,上面有4个蓝色的字,“摸我干啥” 图片换成一个光头 那么,这个效果,就是动态创建控件,纯代码实现的 那么,通过代码,什么时候创建,怎么创建控件呢, 给大家介绍一下 三、纯代码方式动态创建控件 1.注意,我们给大家说,这个动态创建控件的时候,里面会介绍到一些其他的方法和属性,然后呢,你会需要记一下 因为后面可能都会用到 2.首先呢,新建1个项目,然后呢,选中我们的这个Main.storyboard 然后,我们在什么时候,去动态创建这个控件,加到这个屏幕上呢 我们启动项目的时候,首先,加载这个Main.storyboard文件 加载Main.storyboard文件,是不是要对应的加载1个控制器吧 这个控制器,我们看一下,这个控制器对应的类,是哪个类啊 是不是ViewContoller,是这个类型吧 所以说,它就会创建这个类的对象 创建好控制器以后,首先会把这个控制器里面,有1个什么啊 有1个叫做, self.view,是不是这个控制器所管理的这个View啊 它会先创建好控制器所管理的这个View 然后,把控制器所管理的这个View,加载到我们的控制器里面 那么,然后,当控制器创建好这个View,当控制器所管理的这个View已经创建好以后, 接下来,我们再动态的创建自己的子控件,把它加到这个View里面 所以说,首先要等到控制器那个View创建好以后,然后,我们才开始创建自己的控件 那么在什么时候,控制器对应的那个View,就创建好了呢 就是在我们控制器里面,有1个方法或者叫事件,叫做viewDidLoad -(void)viewDidLoad{ [super viewDidLoad]; } 这个方法,就是当控制器里面那个View创建并加载好以后,就开始执行这个方法 在这个方法当中,我们就需要开始创建自己的子控件了 //当要显示一个界面的时候,首先创建这个界面对应的控制器, //控制器创建好以后,接着创建控制器所管理的那个view, //当这个view加载完毕以后,就开始执行这个方法了 - (void)viewDidLoad{ [super viewDidLoad]; } 所以说,当这个方法被执行的时候,也就意味着,控制器所管理的那个View,是不是已经创建好了 //所以,只要viewDidLoad方法被执行了,就表示控制器所管理的view创建好了 那么,当这个view创建好以后,在这里 我们要动态的创建自己的按钮 - (void)viewDidLoad{ [super viewDidLoad]; //动态创建我们自己的按钮 } 2.通过使用代码的方式,来实现动态创建按钮的效果 也就是说,我们打开这个Main.storyboard这个文件, 看到控制器里面,是不是什么都没有啊 然后我们要动态给它创建, 这个要怎么实现呢 自己写代码,来创建按钮,应该写在什么地方呢 应该写在这个控制器的viewDidLoad方法里面 那么,这是一个什么方法呢 为什么动态创建按钮的方法,要写在这个方法里面呢 我们说,当我们要显示1个界面的时候, 首先,是不是要创建1个控制器吧, 当控制器创建好以后,它负责创建它所管理的那个view, 它所管理的那个view,是哪个view呢 我们说,这个viewDidLoad这个方法,是在什么时候执行啊 控制器创建好以后,控制器所管理的那个view也创建好以后,并且加载完毕以后, 是不是就会执行下面这个方法吧 - (void)viewDidLoad{ [super viewDidLoad]; } 也就是说,当这个方法执行的时候,也就意味着控制器,以及控制器所管理的那个view,已经创建好了 接下来,我们把动态创建按钮的代码,写在这个方法里面,就可以了 把自己创建的按钮加到这个view里面,就可以了 好,