UIKit基础:9.使用代码创建属于我们的UI控件
来源:互联网 发布:java 每隔1秒执行一次 编辑:程序博客网 时间:2024/06/10 02:58
在前面的几个博文了, 我们知道了UIView的概念, 以及怎么快速的创建属于我们自己的UI控件, 但我之前也说过一句话,storyboard并不是万能的, 只有代码才是万能的, 而所有的UI控件都是通过代码实现的这就足矣说明, 代码有多万能了, 现在我们就来学习一下.
首先这里要普及一个知识点, 在我们刚开始创建好项目的时候, 会有一个ViewController.m和ViewController.h文件, 在.m文件里有一个方法必须得实现, 否则我们所写的东西都无法实现:
下面就是实现我们自定义控件的代码:
- (void)viewDidLoad { [super viewDidLoad]; // 创建并且初始化UIButton控件对象类型为System UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; // 设置Button的位置 [button setFrame:CGRectMake(110, 220, 100, 40)]; // 设置Button的背景颜色 [button setBackgroundColor:[UIColor redColor]]; // 设置在默认状态下的文字 [button setTitle:@"我是按钮" forState:UIControlStateNormal]; // 设置在被点击和被长按状态(也称为高亮状态)下的文字. [button setTitle:@"按钮是我" forState:UIControlStateHighlighted]; // 把自定义的Button添加到UIView里去. [self.view addSubview:button];}
这里要说一下, 其实UIButton类型有几种类型, 但有一个类型已经被合并了:
typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, // no button type UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), // standard system button UIButtonTypeDetailDisclosure, UIButtonTypeInfoLight, UIButtonTypeInfoDark, UIButtonTypeContactAdd, UIButtonTypeRoundedRect = UIButtonTypeSystem, // Deprecated, use UIButtonTypeSystem instead};
我们一般使用UIButton就只用两个类型, 一个是System, 一个是Custom类型, 其他的都是比较少用.
我们添加完Button之后, 如果需要点击该按钮之后进行些什么事情, 那就要用到监听的方法, 比如:
- (void)viewDidLoad { [super viewDidLoad]; // 创建并且初始化UIButton控件对象类型为System UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; // 设置Button的位置 [button setFrame:CGRectMake(110, 220, 100, 40)]; // 设置Button的背景颜色 [button setBackgroundColor:[UIColor redColor]]; // 设置在默认状态下的文字 [button setTitle:@"我是按钮" forState:UIControlStateNormal]; // 设置在被点击和被长按状态(也称为高亮状态)下的文字. [button setTitle:@"按钮是我" forState:UIControlStateHighlighted]; // 添加监听方法 [button addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside]; // 把自定义的Button添加到UIView里去. [self.view addSubview:button];}- (void)myButton{ NSLog(@"点击我了~~~");}
打印出来的结果:
2015-02-14 01:36:45.895 UIKit-06使用代码创建[9388:777564] 点击我了~~~
这里解释一下参数, action: 这个参数是监听哪个名字的方法, 而例子里, 我监听的是myButton的方法,forControlEvents:这个参数是Button点击的动作, 例子所设定的是点击后抬手, 在里面还有很多其他动作, 大家也可以回去各自尝试.
细心的朋友应该会想到我们之前在storyboard创建的Button是IBAction返回值, 而我们现在所监听的方法却是void类型, 那么这两个到底有什么区别呢? 其实这两个方法最大的区别就是IBAction可以连线, 而void不可以连线并且都可以设置参数和不设置参数, 例子中是没有设置参数的, 如果要设置参数, 那么就需要在监听的方法名加上分号, 比如:
- (void)viewDidLoad { [super viewDidLoad]; // 创建并且初始化UIButton控件对象类型为System UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; // 设置Button的位置 [button setFrame:CGRectMake(110, 220, 100, 40)]; // 设置Button的背景颜色 [button setBackgroundColor:[UIColor redColor]]; // 设置在默认状态下的文字 [button setTitle:@"我是按钮" forState:UIControlStateNormal]; // 设置在被点击和被长按状态(也称为高亮状态)下的文字. [button setTitle:@"按钮是我" forState:UIControlStateHighlighted]; // 添加监听方法 [button addTarget:self action:@selector(myButton:) forControlEvents:UIControlEventTouchUpInside]; // 把自定义的Button添加到UIView里去. [self.view addSubview:button];}- (void)myButton:(UIButton *)sender{ NSLog(@"点击我了~~~%@", [sender.titleLabel text]);}
这个方法传入的参数必须是UIButton, 就和IBAction一样, 所传入的参数也只能是UIButton.
UIButton讲到这里, 基本上都讲完了, 但有一个小细节, 经常使用iOS设备的朋友肯定会发现, 我们在iOS程序中所看到的UIButton全部都是图片, 并不是我们所写上去的文字, 那么在UIButton上是如何把图片载入呢? 下面让我们一起来看看:
// 设置默认状态下的UIButton的前置图 [button setImage:[UIImage imageNamed:@"Button.jpg"] forState:UIControlStateNormal]; // 设置高亮状态下的UIButton的前置图 [button setImage:[UIImage imageNamed:@"Button.jpg"] forState:UIControlStateHighlighted]; // 设置默认状态下的UIButton的背景图 [button setBackgroundImage:[UIImage imageNamed:@"Button.jpg"] forState:UIControlStateNormal]; // 设置高亮状态下的UIButton的背景图 [button setBackgroundImage:[UIImage imageNamed:@"Button.jpg"] forState:UIControlStateHighlighted];
UIButton是一个比较特殊的控件, 它可以存放两张图片, 一张是前置图, 一张是背景图, 存放前置图的时候有一个注意点, 如果你的Button是有名字的话, 那么前置图会和名字平均分UIButton的宽度, 背景图却不会这样子, 下面是例子:
这个就是存入前置图的效果
有些人估计会觉得奇怪, 为什么storyboard那么好用, 反而选使用代码呢? 其实这个东西并不是说谁好谁坏,storyboard是有它的好处, 但如果一个界面要你添加几十个Button, 那不拖的累死了么? 用代码的话直接就一个for循环就搞定了, 我不崇尚只单独使用一种方法, 要结合我们实际开发的效率, 一切以效率为准则.
好了, UIButton就讲到这里, 下次我们继续~~
- UIKit基础:9.使用代码创建属于我们的UI控件
- UIKit基础:13.UI基础控件的小结
- ios UIKit 基础控件创建与属性
- UI基础-基础控件-0324-通过代码创建按钮
- UIKit基础:17-基础控件的总结
- UIKIT基础控件小结
- UIKit基础控件小结
- UI基础控件的使用1
- UIKit 06、使用UITabBarController 和 自定义标签栏控件 创建多视图的iOS应用程序
- UI的创建基础
- 创建属于自己的代码仓库吧!
- 创建属于自己的代码仓库吧!
- 属于我们的名言
- 使用代码创建UI界面
- Swift!代码实现UI基础控件
- UI基础----常见控件的使用之TextView
- UI基础----常见控件的使用之EditText
- UI基础----常见控件的使用之Button
- C语言学习七数据类型的学习之常量和进制
- iOS拼接字符串的方式
- GPS信号转发器,GPS信号覆盖,GPS信号放大器,GPS信号增强器
- 使用php完成一个用户注册以及管理的demo(二)
- Java多线程中join方法的理解
- UIKit基础:9.使用代码创建属于我们的UI控件
- code128b条码生成程序
- ssh问题之:could not initialize proxy - no Session
- tcpdump命令的使用
- [zz]c#串口通信的小例子
- poj3126 BFS
- 使用oracle压缩blob对象
- 设置 Sublime Text 的 Python 开发环境
- Prim【MST】