UI第二节——UIButton详解
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *controller = [[UIViewController alloc]init];
[self.window setRootViewController:controller];
// 创建UIButton,唯独UIButton的创建不一样
// UIButtonTypeSystem 系统默认的类型
// UIButtonTypeCustom 用户自定义类型
// UIButtonTypeContactAdd 文字前面会有一个 + 符号
// UIButtonTypeDetailDisclosure 会有一个 i 符号
// UIButtonTypeInfoLight
// UIButtonTypeInfoDark
// UIButtonTypeRoundedRect 跟UIButtonTypeSystem没有区别
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
// 设置它的frame(位置)
btn.frame = CGRectMake(20, 30, 335, 30);
// NSLog(@"%f, %f", btn.frame.size.width, btn.frame.size.height);
// btn.frame.origin // 原点坐标
// btn.frame.size // 大小
// 设置标题
// UIControlStateNormal 普通状态
// UIControlStateHighlighted 高亮状态
[btn setTitle:@"This is a Button" forState:UIControlStateNormal];
[btn setTitle:@"Heightlighted" forState:UIControlStateHighlighted];
// 设置Button的字体
btn.titleLabel.font = [UIFont systemFontOfSize:30];
// 调整Title位置
// top left bottom right 的偏移
btn.titleEdgeInsets = UIEdgeInsetsMake(0, -100, 0, 0);
// 主题颜色
btn.tintColor = [UIColor whiteColor];
// 背景颜色
btn.backgroundColor = [UIColor redColor];
// 添加点击事件
// 让 target(谁) 去做 action (什么事)
// 让AppDelegate对象去执行 btnClicked: 这个函数
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
// 把Button添加到Window上
[self.window addSubview:btn];
/******
第二个Button
******/
UIButton *secondBtn = [UIButton buttonWithType:UIButtonTypeCustom];
secondBtn.frame = CGRectMake(20, 70, 335, 30);
[secondBtn setTitle:@"Seconde Button" forState:UIControlStateNormal];
// clearColor 透明颜色
secondBtn.backgroundColor = [UIColor clearColor];
// 设置图片
// 加载项目中的图片
UIImage *image = [UIImage imageNamed:@"bc_btn_blue"];
NSLog(@"%f, %f", image.size.width, image.size.height);
UIImage *heightlightedImage = [UIImage imageNamed:@"test"];
// 设置Button的背景图片
[secondBtn setBackgroundImage:image forState:UIControlStateNormal];
[secondBtn setBackgroundImage:heightlightedImage forState:UIControlStateHighlighted];
// 设置Button的图标
// 图标这里,只会要图片的形状
UIImage *iconImage = [UIImage imageNamed:@"IconEye"];
UIImage *heightlightedIconImage = [UIImage imageNamed:@"IconFlag"];
[secondBtn setImage:iconImage forState:UIControlStateNormal];
[secondBtn setImage:heightlightedIconImage forState:UIControlStateHighlighted];
// secondBtn.tintColor = [UIColor redColor];
[self.window addSubview:secondBtn];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
- (void)btnClicked:(UIButton *)btn
{
NSLog(@"2222");
}
如果对你有帮助,请关注我哦!
UI第二节——UIButton详解的更多相关文章
- 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 ...
- 第7.20节 案例详解:Python抽象类之真实子类
第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义 ...
- 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类Sta ...
- 第7.16节 案例详解:Python中classmethod定义的类方法
第7.16节 案例详解:Python中classmethod定义的类方法 上节介绍了类方法定义的语法以及各种使用的场景,本节结合上节的知识具体举例说明相关内容. 一. 案例说明 本节定义的一个 ...
- 第7.13节 案例详解:Python类变量
第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一. 定义函数dirp def dirp(iter): ret ...
- UI第六节——UINavigationController 详解
1. UINavigationController 是一个容器类.里面盛放的是UIViewController. 容器的意思是,如果你不放入UIViewController,里面就是空的,什么也没有. ...
- iOS开发——UI篇OC&transform详解
transframe属性详解 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基 ...
- UI第四节——UIImageView详解
- (void)viewDidLoad { // super调用是必须的 [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@&quo ...
- UI第十六节——UITabBarController详解
一.UITabBarController主要用来管理你提供的content view controllers,而每一个 content view controller则负责管理自己的view层级关系, ...
随机推荐
- 最小生成树问题---Prim算法与Kruskal算法实现(MATLAB语言实现)
2015-12-17晚,复习,甚是无聊,阅<复杂网络算法与应用>一书,得知最小生成树问题(Minimum spanning tree)问题.记之. 何为树:连通且不含圈的图称为树. 图T= ...
- 电影发烧友必备知识-720P、1080P、4K的区别
随着技术的进步,现在的影视作品的清晰度也越来越高,观众的体验也越来越好,普清的电影基本没人看了,尤其是影视爱好者现在都是看1080P或蓝光原盘.4K. 目前主流清晰度主要分为720P(高清).1080 ...
- Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
今天执行:autoreconf -fvi的时候出现如下错误: autoreconf: Entering directory `.' autoreconf: configure.in: not usin ...
- mongoDB在centos7上的安装
1,下载安装包 下载MongoDB的安装文件 地址:https://www.mongodb.org/downloads#production 选择Linux 64-bit legacy 版本,下载到目 ...
- Beta版本冲刺第二天 12.6
一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 昨天完成任务 今天完成任务 第三天冲刺要做任务 问题困难 心得体会 胡泽善 完成了"记住密码"的的逻辑以及BUG修改 ...
- webView(简单的浏览器)
#import "MJViewController.h" @interface MJViewController () <UISearchBarDelegate, UIWeb ...
- HashMap与ArrayList互相嵌套的代码实现
HashMap嵌套ArrayList的代码实现 结果要求为 三国演义 吕布 周瑜笑傲江湖 令狐冲 林平之神雕侠侣 ...
- Mysql事务,并发问题,锁机制
.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约束 ...
- 利用百度开发者中心的api实现地图及周边的搜索
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 《高性能MySQL》读书笔记--锁、事务、隔离级别 转
1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...