IOS开发学习笔记019-动态创建控件
动态创建控件
一、按钮
二、文本输入框
三、lable标签
注意:
只是简单的拖拽控件会毁了你,所以最好还是手动通过代码创建控件。
如果要通过代码生成按钮的话,可以在系统自带的函数viewDidLoad实现。应为每个控件都对应一个类,所以可以直接通过类创建一个对象,也就是一个控件,然后再逐步设置控件的属性。
下面这些操作基本上都是通用的,在不同的控件下操作基本相同
一、按钮
1、创建对象,这没啥好说的
UIButton *btn = [[UIButton alloc] init];
2、在显示到视图控制器之前还要设置一些基本属性
1.1 设置按钮普通状态下得属性
// 设置背景图片
UIImage *image = [UIImage imageNamed:@"btn_01.png"];
[btn setBackgroundImage:image forState:UIControlStateNormal];
// 设置显示的文字
[btn setTitle:@"come on" forState:UIControlStateNormal];
// 设置文字颜色
UIColor *color = [UIColor colorWithRed:0 green:0 blue:124 alpha:1];
[btn setTitleColor:color forState:UIControlStateNormal];
UIControlStateNormal、UIControlStateHighlighted表示按钮的状态,表示普通模式和高亮模式
1.2 设置高亮状态下得属性
image = [UIImage imageNamed:@"btn_02.png"];
[btn setBackgroundImage:image forState:UIControlStateHighlighted];
// 设置显示的文字
[btn setTitle:@"去死" forState:UIControlStateHighlighted];
// 设置文字颜色
color = [UIColor colorWithRed:200 green:0 blue:0 alpha:1];
[btn setTitleColor:color forState:UIControlStateHighlighted];
3、创建后要把对象添加到视图,这样才能显示出来。
[self.view addSubview:btn]; // 添加按钮到控制器中得viwe中
具体过程就看代码吧。
#import "SLQViewController.h" const int DELTA = ;
@interface SLQViewController () @end @implementation SLQViewController // 控制器的view加载完毕会调用一次
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"viewdidload-----"); // 1、创建按钮
UIButton *btn = [[UIButton alloc] init]; // 设置位置和尺寸
btn.frame = CGRectMake(, , , );
// 设置按钮普通状态下得属性
// 设置背景图片
UIImage *image = [UIImage imageNamed:@"btn_01.png"];
[btn setBackgroundImage:image forState:UIControlStateNormal];
// 设置显示的文字
[btn setTitle:@"come on" forState:UIControlStateNormal];
// 设置文字颜色
UIColor *color = [UIColor colorWithRed: green: blue: alpha:];
[btn setTitleColor:color forState:UIControlStateNormal];
//;
//[btn setTitleColor:<#(UIColor *)#> forState:<#(UIControlState)#>]; // 设置高亮状态下得属性
image = [UIImage imageNamed:@"btn_02.png"];
[btn setBackgroundImage:image forState:UIControlStateHighlighted];
// 设置显示的文字
[btn setTitle:@"去死" forState:UIControlStateHighlighted];
// 设置文字颜色
color = [UIColor colorWithRed: green: blue: alpha:];
[btn setTitleColor:color forState:UIControlStateHighlighted]; // 监听按钮点击事件
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
// 2、添加按钮到控制器中得viwe中
[self.view addSubview:btn];
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (void)btnClick:(UIButton *)btn
{
NSLog(@"点击按钮:%p",btn);
}
二、文本输入框
创建一个文本输入框
// 文本框
UITextField *text = [[UITextField alloc] init]; // 创建对象
text.frame = CGRectMake(, , , ); // 设置位置和尺寸
text.backgroundColor = [UIColor redColor]; // 设置背景颜色
[self.view addSubview:text]; // 添加到视图控制器的view中
效果这样

三、lable标签
创建lable标签
// lable标签
UILabel *lable = [[UILabel alloc] init]; // 创建lable对象
lable.frame = CGRectMake(, , ,); // 设置位置和尺寸
lable.text = @"this is a lable"; // 设置显示文本
lable.textColor = [UIColor colorWithRed: green: blue: alpha:]; // 设置RGBA值
lable.font = [UIFont systemFontOfSize:];
[self.view addSubview:lable]; // 添加到view中
关于这个控件包含的属性和方法可以直接去源文件里查找。比如说lable的下列可操作属性。
@property(nonatomic,copy) NSString *text; // default is nil
@property(nonatomic,retain) UIFont *font; // default is nil (system font 17 plain)
@property(nonatomic,retain) UIColor *textColor; // default is nil (text draws black)
@property(nonatomic,retain) UIColor *shadowColor; // default is nil (no shadow)
@property(nonatomic) CGSize shadowOffset; // default is CGSizeMake(0, -1) -- a top shadow
@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft
@property(nonatomic) NSLineBreakMode lineBreakMode; // default is NSLineBreakByTruncatingTail.
总结:
通过代码创建控件的一般过程就是
1、创建一个OC类对象,其实就是对应一个控件
比如 UIButton *btn = [[UIButton alloc] init]; //
2、对控件的一般属性进行设置,不然无法显示到view中
比如设置位置尺寸、标题,字体,背景等属性,可以去对应的类中查看可以是用的属性和方法。
3、添加到View视图,这样最终才会显示到程序中。
IOS开发学习笔记019-动态创建控件的更多相关文章
- <WP8开发学习笔记>修改panorama全景控件的标题的大小
panorama(全景)控件非常具有WinPhone特色,但是那个巨大的标题许多时候会让人觉得违和.怎么修改它呢? 最开始想到的是加一个FontSize,结果毫无影响.╮(╯-╰)╭ <phon ...
- Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性
一个自用的基于excel的小工具. , ), .Cells(, )) sysKpiRow.Interior.ColorIndex = ).value = , ) ...
- VisionPro笔记(1):动态创建控件
VisionPro学习笔记(1):动态创建控件 有的时候可能需要在程序中动态创建控件,VisionPro实例中提供了一例动态创建Blob控件的方法.当然,动态创建过多的控件会极大的消耗系统的资源,建 ...
- iOS开发UI篇—Quartz2D(自定义UIImageView控件)
iOS开发UI篇—Quartz2D(自定义UIImageView控件) 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义 ...
- iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162 ...
- 小子给大家分享一个或者多个新手创建tableview经常会遇到的坑(动态创建控件,xib的重用)
小子最近做了一个根据接口返回的数据在Cell中动态创建控件,感觉应该会一部分人卡在这里,小子就跟大家分享一下: 1.控件重复创建:这个问题出现的原因是动态创建的cell内容的时候,无法进行重用设置,所 ...
- 【转载】MFC动态创建控件及其消息响应函数
原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...
- MFC动态创建控件及其消息响应函数
这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...
- delphi动态创建控件
动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...
随机推荐
- TestNG并发测试包
https://www.yiibai.com/testng/basic-annotations.html
- lattice diamond fpga 状态机的理解
比如序列检测101,需要三个状态 :so,s1,s2. 思路:(1)s0状态有两种情况0或1,若为0时在自身打圈,是1时进入s1状态. (2)s1状态有两种0或1,若为1自身打圈,因为1可以作为下次检 ...
- OpenGL glReadPixels 转成 CImage
本来是一件很简单的事情,就是将View上使用OpenGL画出来的数据生成图片让其实现打印的功能,我们知道MFC提供打印的接口是不支持OpenGL的(至少我不清楚),必须将它转成GDI再画在Print的 ...
- JS中的Global对象
Global对象可以说是ECMAScript中最特别的一个对象了.因为不管你从什么角度上看,这个对象都是不存在的.ECMAScript中的Global对象在某种意义上是作为一个终极的“兜底儿对象”来定 ...
- IOS AppDelegate常用方法
// 当应用程序启动完毕的时候就会调用(系统自动调用) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithO ...
- 【BZOJ4196】[NOI2015] 软件包管理器(树链剖分)
点此看题面 大致题意: 有\(n\)个软件包,它们的依赖关系形成一棵树.现在,问你安装或卸载一个软件包,会影响多少个软件包的安装状态. 树链剖分 这道题应该是 树链剖分 算法比较入门的题目吧. 对于安 ...
- python操作文件目录
# 查看当前目录的绝对路径: >>> os.path.abspath('.') /Users/NaCl/Documents/GitHub #同样的道理,要拆分路径时,也不要直接去拆字 ...
- THinkPHP 5.0 域名路由
ThinkPHP支持完整域名.子域名和IP部署的路由和绑定功能 要启用域名部署路由功能,首先需要开启: 'url_domain_deploy' => true 定义域名部署规则支持两种方式:动态 ...
- java: 非法字符: \65279
IDEA导入项目后,编译的时候出现Error:(1, 1) java: 非法字符: \65279: 修改:找到编译报错的文件,用Notepad++工具,以UTF-8无BOM格式编码保存,然后重新编译即 ...
- 解决ndk编译lua时遇到 undefined reference to '__srget'的问题
今天用ndk r10d版本编译lua时,遇到几个错误,提示没有找到__srget 没有定义,于是看了国外的大神的解决方法, 是因为ndk在r10c之后的版本已经将getc函数屏蔽了,所以导致编译器找不 ...