iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView
第一个ios程序
@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:];
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标识找出对应的控件(一般都是子控件)
iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView的更多相关文章
- iOS开发UI基础—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- iOS开发UI篇—控制器的创建
iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中 ...
- iOS开发UI篇—控制器的View的创建
iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...
- IOS开发UI基础--数据刷新
IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...
- iOS开发-UI基础Demo
现在更多的学习资料都是xCode4.X的,发现xCode6.1还是很多东西,如果有正在学习iOS开发的可以通过Demo简单了解下iOS的UI开发~ 1.新建单视图文件: 2.新建项目名称,语言选择OC ...
- iOS开发——UI基础-提示框
提示框的种类有很多,废话不多说,直接上代码 一.文本提示框 运行结果如下: 代码实现如下: @interface ViewController () // 添加方法 - (IBAction)add; ...
- iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控 ...
- IOS开发UI基础storyboard相关概念的认识
本文主要介绍一些基本的概念 为后面的学习做个准备 需要了解的知识点有以下几个方面: storyboard文件的认识 IBAction 和IBOutlet UIViewController控制器的认识 ...
- iOS开发——UI基础-UIScrollView
一.UIScrollView使用的步骤 1.创建UIScrollView 2.将需要展示的内容添加到UIScrollView中 3.设置UIScrollView的滚动范围 (contentSize) ...
随机推荐
- 关键字static(1)
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念.被static修 ...
- jQuery基础(2)-- jQuery 选择器
jQuery 选择器允许您对 HTML 元素组或单个元素进行操作.jQuery 选择器基于元素的 id.类.类型.属性.属性值等"查找"(或选择)HTML 元素. 它基于已经存在的 ...
- java编程思想-接口总结
"确定接口是理想选择,因而应该总是选择接口而不是具体的类."这其实是一种诱饵.当然,对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂. 许多人都掉进了这种诱惑的陷阱, ...
- BZOJ2827: 千山鸟飞绝
离散化坐标,每个坐标开一棵以鸟的编号为关键字的平衡树.每次插入时打2个标记,同时更新自身.这个方法比较显然,而且好写.正解好像用很迷的方法乱搞了一波,然后用线段树不打标记就做出来了,并不会. trea ...
- 9月26日JavaScript表单验证、正则表达
一.非空验证 trim:去空格(去掉前后的空格),任何字符串都可以用这个方法.写法为:if(v.trim().length==0),表示如果去掉空格后的字符串的长度为0. <body> & ...
- SpringMVC中的设计模式
1.<跟我学SpringMVC> P10 2.<跟我学SpringMVC> P32
- 一段发工资的shell代码
人事发工资条之前是一个个截图发到我们的邮箱里,看人事妹纸是一个善良而又美丽的姑凉,于是乎写了一段shell代码实现批量发短信至各个手机号.不多说了,上代码,其实很简单,我都不好意思上传,还是记录下吧, ...
- Robot Framework--10 万能的evaluate
转自:http://blog.csdn.net/tulituqi/article/details/10124559 这一讲我们重点来介绍一下一个常用的关键字evaluate. 我觉得这个关键字在RF里 ...
- linux端口详解
Linux端口总结如下: 0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 2|管理实用程序 3|压缩进程 5|远程作业登录 7|回显 9|丢弃 11|在线用户 13|时间 ...
- maven pom.xml加载不同properties配置[转]
可以参考http://www.openwebx.org/docs/autoconfig.html 1.pom.xml =========================== <!-- 不同的打包 ...