你的位置:首页 > 操作系统

[操作系统]UI基础(一)


 本文以及后期主要讲解学习UI以及IOS开发必须掌握的一些知识和重点,当然学习这些知识最好要有c和oc的基础,如果没有基础,建议先看广州小码哥教育"李明杰"总裁、IOS学院"李南江"院长讲解的零基础学习IOS开发。

 

第一个ios程序

 1 @interface ViewController : UIViewController 2  3 @property(nonatomic, weak)IBOutlet UILabel *lable; 4  5 @end 6  7  8  9 @interface ViewController ()10 11 @end12 13 @implementation ViewController14 15 /**16  红色按钮17 */18 - (IBAction)redBtnClick19 {20 //  -[ViewController redBtnClick]21   NSLog(@"%s", __func__);22   // 拿到UILabel对象, 修改对象的属性, 让label对象变为红色23   self.lable.textColor = [UIColor redColor];24   self.lable.text = @"我是红色文字";25   self.lable.backgroundColor = [UIColor purpleColor];26   self.lable.font = [UIFont systemFontOfSize:30];27   self.lable.textAlignment = NSTextAlignmentCenter;28 }29 /**30  绿色按钮31 */32 - (IBAction)greenBtnClick33 {34   NSLog(@"%s", __func__);35   self.lable.textColor = [UIColor greenColor];36 }37 /**38  蓝色按钮39 */40 - (IBAction)blueBtnClick41 {42   NSLog(@"%s", __func__);43   self.lable.textColor = [UIColor blueColor];44 }45 @end

 

一、控制器


  1.什么是控制器:

    任何继承于UIViewController的类,都称之为控制器

  2.控制器的作用:

    管理UI界面(负责管理UI界面的创建和一些事件的处理)

  3.注意点:

    UI界面是可以和它与之对应的控制器进行连线的,我们可以通过连线的方式,让UI界面上的元素和控制器中的代码产生一定的关系;默认情况下,UI界面中的元素是不能和方法进行关联的,要想关联UI界面中的元素必须将方法的返回值修改为IBAction。

 

二、IBAction和IBOutlet


 

  • IBAction

    - (IBAction)redBtnClick;

   1. IBAction

     1.1 从返回值角度上看,作用相当于void

     1.2 只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线

     1.3 IBAction只能加在方法上, 不能加在属性上

 

   2. IBAction几种连线方式

     从"控制器"往"Storyboard"连线

     从"Storyboard"往"控制器"连线

     直接在"Storyboard"中往"Storyboard"上的界面顶部连线

     直接在"Storyboard"中往"Storyboard"上的工具条连线

     不用先定义方法, 直接从"Storyboard"往"控制器"连线(常用)  

 

   3.IBAction连线的注意点:

     3.1 在Storyboard中拷贝元素的时候需要注意

       拷贝的同时会将以前的连线一起拷贝

       一个方法可以很多个控件关联

       一个控件可以和很多方法进行连线,在开发中, 一般情况下不会这样写

     3.2 如果将按钮关联的方法删除, 运行之后会报一个经典错误

         reason: '-[ViewController redBtnClick]: unrecognized selector sent to instance 0x7fb4aa618e50'

     3.3 IBAction只能作为方法的返回值

 

 

  • IBOutlet

  @property(nonatomic, weak)IBOutlet UILabel *lable;

  1. IBOutlet

    1.1 只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线

    1.2 属性要想能够连线必须在数据类型前面加上IBOutlet

  2. IBOutlet的几种连线方式

    从"控制器"往"Storyboard"连线

    从"Storyboard"往"控制器"连线

    直接在"Storyboard"中往"Storyboard"上的界面顶部连线

    直接在"Storyboard"中往"Storyboard"上的工具条连线

    不用先定义方法, 直接从"Storyboard"往"控制器"连线

  3. 注意点:

    一个控件可以关联多个属性

    一个属性不可以关联多个控件

    在进行属性连线的时候, Xcode会自动帮我们进行类型检测, 如果类型不匹配那么不能连线

    如果将属性和控件连线之后又将属性删除了, 那么只要程序运行就会报一个经典错误

       '[<ViewController 0x7fe9d9f1a5d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key lable.'

    任何UI控件都可以和属性进行连线, 但是并不是任何控件都可以和方法连线. 只有继承于UIControl的控件才可以连线

 

三、UIView


+ 什么是控件?

    - 屏幕上的所有UI元素都叫做控件,也有人叫做视图、组件

    - 按钮(UIButton)、文本(UILabel)都是控件

 

+ 控件的共同属性有哪些?

    - 尺寸

    - 位置

    - 背景色

    - ......

 

+ 苹果将控件的共同属性都抽取到父类UIView中

    - 所有的控件最终都继承自UIView

    - UIButton、UILabel都是继承自UIView(可以查看头文件)

 

+  每一个控制器(UIViewController)内部都有个默认的UIView属性

    - @property(nonatomic,retain) UIView *view;

    - 控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)

 

+ UIView常见属性和方法

 1 + @property(nonatomic,readonly) UIView *superview; 2  //获得自己的父控件对象 3  4 + @property(nonatomic,readonly,copy) NSArray *subviews; 5 //获得自己的所有子控件对象 6  7 + @property(nonatomic) NSInteger tag; 8 //控件的ID(标识),父控件可以通过tag来找到对应的子控件 9 10 + @property(nonatomic) CGAffineTransform transform;11 // 控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)12 13 + @property(nonatomic) CGRect frame;14 // 控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)15 16 + @property(nonatomic) CGRect bounds;17 //控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)18 19 + @property(nonatomic) CGPoint center;20 // 控件中点的位置(以父控件的左上角为坐标原点)21 22 23 24 25 - (void)addSubview:(UIView *)view;26 //添加一个子控件view27 28 - (void)removeFromSuperview;29 //从父控件中移除30 31 - (UIView *)viewWithTag:(NSInteger)tag;32 //根据一个tag标识找出对应的控件(一般都是子控件)

 




安徽旅游住宿攻略安徽旅游最佳时间安徽自驾游最佳路线安徽旅游多少钱安徽旅游报价价格南沙水鸟世界生态园在哪里?广州南沙水鸟世界有什么好玩项目? 南沙水鸟世界生态园什么时候去最好?广州南沙水鸟世界最佳旅游季节? 珠海怎么去南沙水鸟世界?广州南沙水鸟世界开车怎么走? 中山开车到南沙水鸟世界多长时间?广州南沙水鸟世界自驾车路线? 冰雪奇缘临安大明山 开启最IN滑雪模式(组图) 爱情见证 和爱人一生必去的19个绝美小镇(全文) 梅香四溢年味浓 南京赏梅绝佳地点推荐 夜游神话世界 欢乐海岸水秀小孩子要票么?深圳欢乐海岸水秀儿童多大收费? 欢乐海岸水秀剧场电话?深圳欢乐海岸水秀剧场订票? 喇叭沟门 秋天的油画 深圳欢乐海岸水秀剧场上演时间几点?欢乐海岸水秀剧场几点开演? 去香港买珠宝首饰要注意些什么? 什么时候是圣诞节? 香港有几个机场?香港有多少个机场? 在香港旅游想吃甜品去哪里好?香港哪里有地道的甜品吃? 08055C683K4T4A Datasheet 08055C683K4T4A Datasheet AQ12EA470FAJME\500 Datasheet AQ12EA470FAJME\500 Datasheet SQCA5A331GAJME\500 Datasheet SQCA5A331GAJME\500 Datasheet 浙江去香港旅游 浙江去香港旅游 浙江去香港旅游 鸡西去港澳游 鸡西去港澳游 鸡西去港澳游 四平去香港澳门旅游 四平去香港澳门旅游 四平去香港澳门旅游