iOS 开发学习之 User Interface(3)iOS 坐标系和 UILabel 与 UIButton
注意:控制器的视图默认是透明的,需要给其设置背景。
a. 创建UILabel对象,使用带frame参数的初始化方法。
此参数是结构体类型,包含了该UI对象显示在视图上的位置,尺寸。
iOS 坐标系:
屏幕左上角为(0,0)起始点,
终点:(各代设备尺寸不同而变化)
3GS及之前:(320,480) — 像素 — (320,480)
4,4s: (320, 480) — 像素 — (640,960)
5,5s:(320,568)
6,6s:(375,667)(plus:414,736)
b. 将UILabel对象添加到当前控制器的视图上。
UILabel基本属性
.text // 设置文字
.font // 设置文字字体 {
// 大小
lb.font = [UIFont systemFontOfSize:17];
//粗体
lb.font = [UIFont boldSystemFontOfSize:30];
//斜体,只对英文有效
lb.font = [UIFont italicSystemFontOfSize:17];
//系统的字体
NSArray *arrFonts = [UIFont familyNames];
//设置自定义字体
lb.font = [UIFont fontWithName:@"Bodoni 72 Oldstyle" size:14];
}
.textColor // 设置文字颜色 {
//设置背景色
lb.backgroundColor = [UIColor redColor];
//自定义颜色值
lb.backgroundColor = [UIColor colorWithRed:199.0/255.0 green:150.0/255.0 blue:100.0/255.0 alpha:1.0];
}
.textAlignment // 设置文字布局
.backgroundColor // 设置文字背景
.lineBreakMode // 设置文字换行模式{
lb.lineBreakMode = NSLineBreakByClipping;
lb.lineBreakMode = NSLineBreakByTruncatingHead;
lb.lineBreakMode = NSLineBreakByTruncatingTail;
lb.lineBreakMode = NSLineBreakByWordWrapping
}
.numberOfLines // 设置文字行数,设为 0 代表任意多行,会自动换行
.clipsToBounds // 设置是否将子图层或子视图的边界剪切至主图层或主视图的边界
.adjustsFontSizeToFitWidth // 文字大小适应视图对象的宽度
.minimumScaleFactor // 最小文字缩放因子 0~1范围,
.shadowColor // 视图的阴影颜色
.shadowOffset // 视图的阴影偏离位置
.layer // 设置视图对象的图层属性 {
-.borderColor // 设置视图的边框颜色
-.borderWidth // 设置视图的边框宽度
-.cornerRadius // 设置视图的圆角弧度
}
.attributedText // 设置带属性的文字
//取得当前视图的宽度、高度
CGFloat w = self.view.frame.size.width;
CGFloat h = self.view.frame.size.height;
注意:
//将label贴到视图上
[self.view addSubview:lb];
/*
app开发:
原生(页面在客户端)
网页(页面在服务器端)
混生(前两者混合)
网站推荐:coredova--开发混生框架,apicloud
*/
// 创建可变的带属性文字的属性
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:lb.text];
// 为文字添加属性
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, 2)];
// [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:200] range:NSMakeRange(6, 8)];
//
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(2, 5)];
[attrStr addAttribute:NSBackgroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(2, 5)];
//
lb.attributedText = attrStr;
//研究
//Core Text 文字排版
UIButton
按钮,用户可触摸,并给予用户响应的视图控件。
继承自UIControl (UIControl 继承自UIView),注意与UILabel的区别
UIControl? 是所有控制类对象(如按钮,滑动器等)的基类。
控制?iOS编程是基于事件驱动的。事件是发送给应用程序来通知它用户动作的对象。事件发生后,会产生消息发送给应用程序(UIApplication对象),由它进行消息的分发,指定由谁来处理此事件。
UIButton创建及基本属性,方法
两种初始化方式:
// initWithFrame:
// buttonWithType: 使用系统给定的类型创建button,注意部分类型已无效。
.layer // 图层属性设置按钮边框
setTitle:forState: // 在不同按钮状态设置文字{
//设置Button的文字,带有左移或右移的枚举可以进行或、与或运算
[btn setTitle:@"我是一" forState:UIControlStateNormal];
// UIControlStateNormal = 0, //正常状态
// UIControlStateHighlighted = 1 << 0, //高亮状态 // used when UIControl isHighlighted is set
// UIControlStateDisabled = 1 << 1, //禁用状态
// UIControlStateSelected = 1 << 2, //被选中状态 // flag usable by app (see below)
// UIControlStateApplication = 0x00FF0000, // additional flags available for application use
// UIControlStateReserved = 0xFF000000
}
. titleLabel // 按钮上文字所在的UILabel ,只读属性{
// 访问Button里的label,redonly
btn.titleLabel.text = @"我被修改了";
btn.titleLabel.backgroundColor = [UIColor redColor];
}
setTitleColor:forState: // 在不同按钮状态设置文字颜色
setContentHorizontalAlignment: // 设置按钮内容的横向布局
{
//设置Button内容的布局
[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];
[btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
}
setContentVerticalAlignment: // 设置按钮内容的纵向布局
.backgroundColor // 按钮背景色,不与状态关联
setSelected: //使按钮处于选中状态{
//使按钮处于选中状态
[btn setSelected:YES];
}
setBackgroundImage:forState: // 在不同按钮状态设置背景图片 [ 背景颜色随状态变化? ]
setImage:forState: // 在不同按钮状态设置前景图片{
//添加前景图片
[btn setImage:[UIImage imageNamed:@"btnTree"] forState:UIControlStateNormal];
}
{
UIImage?图片数据. 三种初始化方法:
imageNamed: // 从缓存中读取图片,若无,则从程序包中找,找到后,先缓存,再返回。否则返回nil
imageWithContentsOfFile: // 直接从路径中找图片
imageWithData: // 从二进制数据创建图片
*从UIImage获取图片尺寸
//二进制流
NSData *dataForImg = [NSData dataWithContentsOfFile:@"/Users/arlen/Desktop/code/UIButtonBasic/UIButtonBasic/btnBackChange.png"];
UIImage *imgForUse2 = [UIImage imageWithData:dataForImg];
}
UIButton 状态,事件
.state // 可设置按钮的状态,正常,高亮,选中等。按钮初始是正常状态,当点击后,状态发生变化。
***addTarget:action:forControlEvents: // 为某一特定事件添加目标对象和行为。(实际上是在内部消息分发表中注册该添加操作)
/* target: 目标对象,消息的接收者
action: 标识行为的选择器
controlEvents: 事件类型
*/