iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

第一个ios程序

1@interfaceViewController : UIViewController23@PRoperty(nonatomic, weak)IBOutlet UILabel *lable;45@end6789@interfaceViewController ()1011@end1213@implementationViewController1415/**16红色按钮17*/18-(IBAction)redBtnClick19{20//-[ViewController redBtnClick]21NSLog(@"%s", __func__);22//拿到UILabel对象, 修改对象的属性, 让label对象变为红色23self.lable.textColor =[UIColor redColor];24self.lable.text =@"我是红色文字";25self.lable.backgroundColor =[UIColor purpleColor];26self.lable.font = [UIFont systemFontOfSize:30];27self.lable.textAlignment =NSTextAlignmentCenter;28}29/**30绿色按钮31*/32-(IBAction)greenBtnClick33{34NSLog(@"%s", __func__);35self.lable.textColor =[UIColor greenColor];36}37/**38蓝色按钮39*/40-(IBAction)blueBtnClick41{42NSLog(@"%s", __func__);43self.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//获得自己的父控件对象34+ @property(nonatomic,readonly,copy) NSArray *subviews;5//获得自己的所有子控件对象67+@property(nonatomic) NSInteger tag;8//控件的ID(标识),父控件可以通过tag来找到对应的子控件910+@property(nonatomic) CGAffineTransform transform;11//控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)1213+@property(nonatomic) CGRect frame;14//控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)1516+@property(nonatomic) CGRect bounds;17//控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)1819+@property(nonatomic) CGPoint center;20//控件中点的位置(以父控件的左上角为坐标原点)2122232425- (void)addSubview:(UIView *)view;26//添加一个子控件view2728- (void)removeFromSuperview;29//从父控件中移除3031- (UIView *)viewWithTag:(NSInteger)tag;32//根据一个tag标识找出对应的控件(一般都是子控件)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航