xcode 学习笔记2:动态添加view
xcode 学习笔记2:动态添加view
2011-07-06 16:48:39| 分类: 计算机学习|字号 订阅
前面说的都是用的Interface Builder来编辑.xib文件来给窗口添加各种控件以及给控件绑定数据(IBOutlet)、关联事件响应函数(IBAction)。
这章学习的是动态的添加view,不使用Interface Builder。这里用label和button示例:
找到新建工程XXXViewController.m的-(void)loadView方法,去掉注释并添加如下代码
- (void)loadView {
//创建一个UIView 对象
UIView *view =
[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
view.backgroundColor = [UIColor lightGrayColor];
//创建一个label view
CGRect frame = CGRectMake(10, 15, 300, 20);
UILabel *label = [[UILabel alloc] initWithFrame:frame];
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:@”Verdana” size:20];
label.text = @”label test”;
label.tag = 1000;
//创建一个按钮view
frame = CGRectMake(10, 30, 300, 50);
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = frame;
[button setTitle:@”button test” forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
button.tag = 2000;
/*下面这个调用用C++的格式来看就是button->addTarget(this->action, @selector(buttonClicked:), UIControlEventTouchUpInside);
中间的action:以及forControlEvent:实际上都是函数签名的一部分。@selector(buttonClicked:) 相当于函数指针(一个冒号表明函数有一个参数),这里指向的是buttonClicked函数
也就是下面定义的按钮响应函数*/
[button addTarget:self action:@selector(buttonClicked:) forControlEvent:UIControlEventTouchUpInside];
[view addSubview:label];
[view addSubview:button];
self.view = view;
[label release];
}
在这个文件中添加按钮响应函数
-(IBAtion) buttonClicked:(id)sender {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Action invoked”
message:@”button clicked”
delegate:self
cancelButtonTitle:”@ok”
otherButtonTitles:nil];
[alert show];
[alert release];
}
label的矩形区域是CGRectMake(10, 15, 300, 20); 既左上角坐标是10,15宽度高度分别是300, 20.
button的矩形区域的左上角坐标是10, 30 ,它们有重叠的地方。
这里遮挡是后加到view里面去的遮挡先加进去的。所以button遮挡了label。可以通过
[view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
来修改遮挡。我的理解是view按照控件加进去的顺给了个index,这个index从0开始递增。显示的时候index数值较大控件遮挡数值较小的。 上面这个函数交换了最先加进去的两个控件(实际上只有这两个)的index
xcode 学习笔记2:动态添加view相关推荐
- Python学习笔记:动态添加与删除属性与方法
文章目录 一.Python语言特点 1.动态语言 2.动态类型语言 3.强类型语言 二.动态添加属性 1.添加对象属性 2.添加类属性 三.动态删除属性 1.删除实例属性 2.删除类属性 四.动态添加 ...
- JavaScript学习笔记:动态添加与删除表格行
文章目录 一.添加表格行与单元格 二.动态删除表格行与单元格 三.案例演示1 四.案例演示2 一.添加表格行与单元格 Javascript可以控制table,动态的插入行和单元格.rows保存着< ...
- JavaWeb学习笔记(动态SQL)
JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...
- 一种无需留坑为页面动态添加View方案
在Activity或Fragment页面动态添加View,有其应用场景,比如配合运营在首页动态插入H5活动页(如下图手淘的雪花例示[1]),在页面头部插入通知View等.本文结合ActivityLif ...
- android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...
本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...
- MyBatis:学习笔记(4)——动态SQL
MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html
- 微信小程序动态添加view
微信小程序动态添加view //index.html<button bindtap='clickMe'> 添加</button> <input type='input' ...
- oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...
天萃荷净 Oracle分区表管理,记录关于Oracle分区表的管理案例:创建.删除.合并.拆分.交换.更改分区表的操作方法 1.添加创建分区表 1.1)增加分区(add partition) 语法是: ...
- databinding通过inflate动态添加view
在MVC中可以通过addView来动态的添加view,那么mvvm通过databinding动态添加view也可以. DataBindingUtil中提供了setContentView和inflate ...
最新文章
- 【luogu P1558 色板游戏】 题解
- web开发快速提高工作效率的一些资源
- HDU 1856 More is better
- 欧盟抢先发布人工智能道德准则:AI要以人为本,负责任且无偏见
- 腾讯云服务器 ubuntu 设置允许root用户登录和禁用ubuntu用户
- 基于微服务和Docker容器技术的PaaS云平台架构设计
- head标签中到底可以放什么?
- Echarts:Vue3中引入地图,展示不同省市数据
- atitit.重装系统需要备份的资料总结 o84..
- 马云的卸任,刘强东的舆论,万达的动荡,谁将是下一个龙头老大!
- Java 动态眨眼 EyesJPanel (整理)
- 捋一捋Kafka中的消费者API
- UTF-8的编码规则
- 【MyBatis】 动态SQL——模糊查询 LIKE
- 含有一般疑问句的歌_一般将来时详解,想学好英语必须要掌握的一个最重要语法...
- vue-seamless-scroll 列表自动滚动
- ElasticSearch 高级
- 用U盘装win7纯净版系统提示缺少所需的CD/DVD驱动器设备驱动程序解决办法
- 9.21nbsp;中航光电面试
- 我的二次创业——Egret Html5游戏引擎
热门文章
- 加速产业AI化!浪潮提出”元脑“生态计划,要用计算力+生态成就行业AI大脑...
- 意念实时转语音!Facebook的非植入式脑机接口,解码准确率达到76%
- Go开发之路 -- 指针类型
- 自动调整速率的Actor设计模式
- 《C++语言入门经典》一2.8 左值与右值
- 推荐八款.Net优秀的开源CMS 内容管理系统
- 《乐高EV3机器人搭建与编程》——2.2 颜色设计
- 使用xilinx的documentation navigator快速查找资料
- 【转】Alert Log Messages: Private Strand Flush Not Complete [ID 372557.1]
- Servet映射规范翻译