博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态添加view
阅读量:5120 次
发布时间:2019-06-13

本文共 2008 字,大约阅读时间需要 6 分钟。

博客分类: 
 

前面说的都是用的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

转载于:https://www.cnblogs.com/moonvan/archive/2012/08/20/2647494.html

你可能感兴趣的文章
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>