iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView
2015-07-14 01:39
477 查看
第一个ios程序
任何继承于UIViewController的类,都称之为控制器
2.控制器的作用:
管理UI界面(负责管理UI界面的创建和一些事件的处理)
3.注意点:
UI界面是可以和它与之对应的控制器进行连线的,我们可以通过连线的方式,让UI界面上的元素和控制器中的代码产生一定的关系;默认情况下,UI界面中的元素是不能和方法进行关联的,要想关联UI界面中的元素必须将方法的返回值修改为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的控件才可以连线
- 屏幕上的所有UI元素都叫做控件,也有人叫做视图、组件
- 按钮(UIButton)、文本(UILabel)都是控件
+ 控件的共同属性有哪些?
- 尺寸
- 位置
- 背景色
- ......
+ 苹果将控件的共同属性都抽取到父类UIView中
- 所有的控件最终都继承自UIView
- UIButton、UILabel都是继承自UIView(可以查看头文件)
+ 每一个控制器(UIViewController)内部都有个默认的UIView属性
- @property(nonatomic,retain) UIView *view;
- 控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)
+ UIView常见属性和方法
@interface ViewController : UIViewController @property(nonatomic, weak)IBOutlet UILabel *lable; @end @interface ViewController () @end @implementation ViewController /** 红色按钮 */ - (IBAction)redBtnClick { // -[ViewController redBtnClick] NSLog(@"%s", __func__); // 拿到UILabel对象, 修改对象的属性, 让label对象变为红色 self.lable.textColor = [UIColor redColor]; self.lable.text = @"我是红色文字"; self.lable.backgroundColor = [UIColor purpleColor]; self.lable.font = [UIFont systemFontOfSize:30]; self.lable.textAlignment = NSTextAlignmentCenter; } /** 绿色按钮 */ - (IBAction)greenBtnClick { NSLog(@"%s", __func__); self.lable.textColor = [UIColor greenColor]; } /** 蓝色按钮 */ - (IBAction)blueBtnClick { NSLog(@"%s", __func__); self.lable.textColor = [UIColor blueColor]; } @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常见属性和方法
+ @property(nonatomic,readonly) UIView *superview; //获得自己的父控件对象 + @property(nonatomic,readonly,copy) NSArray *subviews; //获得自己的所有子控件对象 + @property(nonatomic) NSInteger tag; //控件的ID(标识),父控件可以通过tag来找到对应的子控件 + @property(nonatomic) CGAffineTransform transform; // 控件的形变属性(可以设置旋转角度、比例缩放、平移等属性) + @property(nonatomic) CGRect frame; // 控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点) + @property(nonatomic) CGRect bounds; //控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0) + @property(nonatomic) CGPoint center; // 控件中点的位置(以父控件的左上角为坐标原点) - (void)addSubview:(UIView *)view; //添加一个子控件view - (void)removeFromSuperview; //从父控件中移除 - (UIView *)viewWithTag:(NSInteger)tag; //根据一个tag标识找出对应的控件(一般都是子控件)
相关文章推荐
- [Leetcode 225, Easy] Implement Stack using Queues
- 动效:文字/UIView 从顶部下滑出现,然后滑回去
- 重踏学习Java路上_Day25(GUI)
- continue
- cpuinfo
- iOS KVC(Key-Value Coding)
- iOS中UIButton的使用
- ol元素及相关属性:type, start, value, 和rever
- Android开发UI之布局文件LinearLayout
- iOS中UITextField使用
- [扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性
- UI_UItableView_AutoCell(自定义cell)
- 黑马程序员——基础学习(九)String的实际案例及StringBuffer/StringBuilder
- UIKit框架-07.UIAlertController使用
- [UI] 精美UI界面欣赏[12]
- UI--Android中的状态切换按钮自定义
- UIKit框架 - 06.UIActionSheet使用
- vs2013错误,错误 1 error MSB8020: The build tools for Visual Studio 2012
- Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage
- Android(java)学习笔记127:Android Studio新建工程中的build.gradle、settings.gradle