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相关推荐

  1. Python学习笔记:动态添加与删除属性与方法

    文章目录 一.Python语言特点 1.动态语言 2.动态类型语言 3.强类型语言 二.动态添加属性 1.添加对象属性 2.添加类属性 三.动态删除属性 1.删除实例属性 2.删除类属性 四.动态添加 ...

  2. JavaScript学习笔记:动态添加与删除表格行

    文章目录 一.添加表格行与单元格 二.动态删除表格行与单元格 三.案例演示1 四.案例演示2 一.添加表格行与单元格 Javascript可以控制table,动态的插入行和单元格.rows保存着< ...

  3. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  4. 一种无需留坑为页面动态添加View方案

    在Activity或Fragment页面动态添加View,有其应用场景,比如配合运营在首页动态插入H5活动页(如下图手淘的雪花例示[1]),在页面头部插入通知View等.本文结合ActivityLif ...

  5. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...

    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...

  6. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html

  7. 微信小程序动态添加view

    微信小程序动态添加view //index.html<button bindtap='clickMe'> 添加</button> <input type='input' ...

  8. oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...

    天萃荷净 Oracle分区表管理,记录关于Oracle分区表的管理案例:创建.删除.合并.拆分.交换.更改分区表的操作方法 1.添加创建分区表 1.1)增加分区(add partition) 语法是: ...

  9. databinding通过inflate动态添加view

    在MVC中可以通过addView来动态的添加view,那么mvvm通过databinding动态添加view也可以. DataBindingUtil中提供了setContentView和inflate ...

最新文章

  1. 【luogu P1558 色板游戏】 题解
  2. web开发快速提高工作效率的一些资源
  3. HDU 1856 More is better
  4. 欧盟抢先发布人工智能道德准则:AI要以人为本,负责任且无偏见
  5. 腾讯云服务器 ubuntu 设置允许root用户登录和禁用ubuntu用户
  6. 基于微服务和Docker容器技术的PaaS云平台架构设计
  7. head标签中到底可以放什么?
  8. Echarts:Vue3中引入地图,展示不同省市数据
  9. atitit.重装系统需要备份的资料总结 o84..
  10. 马云的卸任,刘强东的舆论,万达的动荡,谁将是下一个龙头老大!
  11. Java 动态眨眼 EyesJPanel (整理)
  12. 捋一捋Kafka中的消费者API
  13. UTF-8的编码规则
  14. 【MyBatis】 动态SQL——模糊查询 LIKE
  15. 含有一般疑问句的歌_一般将来时详解,想学好英语必须要掌握的一个最重要语法...
  16. vue-seamless-scroll 列表自动滚动
  17. ElasticSearch 高级
  18. 用U盘装win7纯净版系统提示缺少所需的CD/DVD驱动器设备驱动程序解决办法
  19. 9.21nbsp;中航光电面试
  20. 我的二次创业——Egret Html5游戏引擎

热门文章

  1. 加速产业AI化!浪潮提出”元脑“生态计划,要用计算力+生态成就行业AI大脑...
  2. 意念实时转语音!Facebook的非植入式脑机接口,解码准确率达到76%
  3. Go开发之路 -- 指针类型
  4. 自动调整速率的Actor设计模式
  5. 《C++语言入门经典》一2.8 左值与右值
  6. 推荐八款.Net优秀的开源CMS 内容管理系统
  7. 《乐高EV3机器人搭建与编程》——2.2 颜色设计
  8. 使用xilinx的documentation navigator快速查找资料
  9. 【转】Alert Log Messages: Private Strand Flush Not Complete [ID 372557.1]
  10. Servet映射规范翻译