UITableView - 学习笔记(使用)
一个网管的iOS学习笔记,记录下自己这条路上的点点滴滴。都是一些很简单的笔记,不敢妄谈教学,纯粹只是为了记录自己在这条路上——前进着。
- 本来是分成3篇来写的,但是感觉这样太乱而杂了,所以索性整理成一篇。算是自己对UITableView这个控件的初步了解的学习吧。
- 这里分享2篇很全面也很实用的UITableView的博文:
1、 UITableView整理
2、 iOS开发之UITableView全面解析
开始任务:
-
模仿的Demo(简单模仿一下效果,加深对UITableView的了解程度而已,并不包含实际功能):
模仿页面
Step1:分析
- 素材:
需要5个图标(#FFFFFF)和一张背景图片(毛玻璃) - 内容:
这个界面一共有9行,即是:FirstName(名)、LastName(姓)、UserName(昵称)、Password(密码)、Re-Password(确认密码)、Email(邮箱)、Register(注册)、Login here(账号登录)
Step2:搭建基本页面
- 找素材:
谷歌、花瓣、知乎求助等等,小图标的@2x(2倍)图尺寸为为58*58。
关于iOS中尺寸的说明,可以点这里。
我这里已经收集整理好了素材,并且上传到了项目中:
准备好素材
- 搭建基本界面:
首先,实现,UITableView两个代理方法:UITableViewDelegate,UITableViewDataSource
//UITableView的代理方法
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@end
用代码新建一个TableView,添加代理方法、数据源以及为UITableView设置背景图片:
//代码创建一个TableView
- (void)createTableviews{
//创建TableView,设置位置大小
self.registerTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
//给TableView设置背景图片
UIImageView *backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[backImageView setImage:[UIImage imageNamed:@"blurred_background"]];
self.registerTableView.backgroundView = backImageView;
//代理方法和数据源
self.registerTableView.delegate = self;
self.registerTableView.dataSource = self;
//添加到视图中(在屏幕里显示这个TableView)
[self.view addSubview:_registerTableView];
}
添加我们需要初步搭建这个界面需要的TableView的代理方法:
//返回多少个Section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
//每组多少行数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//cell显示的具体内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- 完整代码:
#import "ViewController.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) UITableView *registerTableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//调用自定义方法,创建tableView
[self createTableviews];
}
//代码创建一个UITableView
- (void)createTableviews{
//创建TableView
self.registerTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
//给UITableView设置背景图片
UIImageView *backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[backImageView setImage:[UIImage imageNamed:@"blurred_background"]];
self.registerTableView.backgroundView = backImageView;
//代理方法和数据源
self.registerTableView.delegate = self;
self.registerTableView.dataSource = self;
//添加到视图中(在屏幕里显示这个TableView)
[self.view addSubview:_registerTableView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//返回多少个Section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;//只有一组数据,所以只需要返回一个Section
}
//返回多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (section == 0) {
return 8;//需要8行数据
}else{
return 0;
}
}
//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
return 80;//为了比较直观,设置的比较大
}
return 0;
}
//cell的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//创建cell,标识符为:myCell,类型为:UITableViewCellStyleDefault
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];
//让cell背景透明
cell.backgroundColor = [UIColor clearColor];
//让cell的字体为白色
cell.textLabel.textColor = [UIColor whiteColor];
//cell的字体和大小
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:18];
if (indexPath.section == 0) {
if (indexPath.row == 0) {//名
//设置图标和文字内容
cell.imageView.image = [UIImage imageNamed:@"firstName"];
cell.textLabel.text = @"Your First Name";
}else if (indexPath.row == 1){//姓
cell.imageView.image = [UIImage imageNamed:@"lastName"];
cell.textLabel.text = @"Your Last Name";
}else if (indexPath.row == 2){//昵称
cell.imageView.image = [UIImage imageNamed:@"userName"];
cell.textLabel.text = @"Your User Name";
}else if (indexPath.row == 3){//密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Create Your Password";
}else if (indexPath.row == 4){//确认密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Re-enter Your Password";
}else if (indexPath.row == 5){//邮箱
cell.imageView.image = [UIImage imageNamed:@"email"];
cell.textLabel.text = @"Enter Your Email";
}
}
return cell;
}
@end
-
运行效果
搭建基本页面
现在基本界面完成,还要继续完善。
Step3:进一步完善
需求:正上方一个名为“Register”的标题,正下方一个名为“ Register”的按钮
- 添加一个“Register”的标题:
- 需要调用TableView的两个代理方法:
//组头部视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
//组头部的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- 给TableView添加标题的完整代码:
//组头部的高度(即这里的标题所在视图的高度)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 80;
}
//自定义组头部视图(即标题内容)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
//初始化一个UIImageView,(frame会被之后的label设置,所以可以随便设置,“CGRectMake(0, 0, 0, 0)”等同于“CGRectZero”)
UIImageView *titleImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
titleImage.backgroundColor = [UIColor clearColor];
//初始化一个UILabel,并设置位置大小(计算尺寸是一门技术活,我也不太懂,😄,所以这里随便设置了一下,记得宽度等于屏幕宽)
UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 30, [[UIScreen mainScreen] bounds].size.width, 30)];
titleLabel.text = @"Register";
//字体颜色
titleLabel.textColor = [UIColor whiteColor];
//字体的大小适应label的宽度(很关键的地方)
titleLabel.adjustsFontSizeToFitWidth = YES;
//字体:粗体,字号:30
titleLabel.font = [UIFont boldSystemFontOfSize:22];
//位置:居中对齐
titleLabel.textAlignment = NSTextAlignmentCenter;
//将label放入image的视图中(即显示出来)
[titleImage addSubview:titleLabel];
return titleImage;
}
-
运行效果:
添加一个“Register”的标题:
2.添加一个注册按钮(即“ Register”按钮)
其实基本思路和上一步一模一样:1⃣️只是viewForHeaderInSection换(组头部方法)成了viewForFooterInSection(组尾部方法),2⃣️UILabel(文本)换成了UIButton(按钮)
- 调用方法:组尾部高度和组尾部视图
//组尾部高度方法
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
//组尾部视图方法
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
- 修改组尾部的视图内容,设置为一个绿色的按钮:
//初始化一个button,类型为UIButtonTypeCustom(即自定义风格)
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
//位置大小
registerButton.frame = CGRectMake([[UIScreen mainScreen] bounds].size.width/10, 20, 300, 40);
//设置button颜色(把@“#4FAC74”转成UIColor)
registerButton.backgroundColor = [UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1];
[registerButton setTitle:@"REGISTER" forState:UIControlStateNormal];
//设置button的圆角效果
registerButton.layer.cornerRadius = registerButton.frame.size.height/8;
registerButton.imageView.layer.masksToBounds = YES;
- 给TableView底部添加一个按钮完整代码:
//组尾部高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 100;
}
//组尾部视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIImageView *buttonImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
buttonImage.backgroundColor = [UIColor clearColor];
//初始化一个button,类型为UIButtonTypeCustom(即自定义风格)
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
//位置大小(尺寸比例自行参考,我还不太懂。。。)
registerButton.frame = CGRectMake([[UIScreen mainScreen] bounds].size.width/10, 20, 300, 40);
//设置button颜色(把@“#4FAC74”转成UIColor)
registerButton.backgroundColor = [UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1];
[registerButton setTitle:@"REGISTER" forState:UIControlStateNormal];
//设置button的圆角效果
registerButton.layer.cornerRadius = registerButton.frame.size.height/8;
registerButton.imageView.layer.masksToBounds = YES;
[buttonImage addSubview:registerButton];
return buttonImage;
}
- 运行效果:
项目(目前)完整代码:
#import "ViewController.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) UITableView *registerTableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//调用自定义方法,创建tableView
[self createTableviews];
}
//代码创建一个UITableView
- (void)createTableviews{
//创建TableView
self.registerTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
//给UITableView设置背景图片
UIImageView *backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[backImageView setImage:[UIImage imageNamed:@"blurred_background"]];
self.registerTableView.backgroundView = backImageView;
//代理方法和数据源
self.registerTableView.delegate = self;
self.registerTableView.dataSource = self;
//添加到视图中(在屏幕里显示这个TableView)
[self.view addSubview:_registerTableView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//返回多少个Section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;//只有一组数据,所以只需要返回一个Section
}
//返回多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (section == 0) {
return 8;//需要8行数据
}else{
return 0;
}
}
//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
return 80;//为了比较直观,设置的比较大
}
return 0;
}
//组头部的高度(即这里的标题所在视图的高度)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 80;
}
//自定义组头部视图(即标题内容)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
//初始化一个UIImageView,(frame会被之后的label设置,所以可以随便设置,“CGRectMake(0, 0, 0, 0)”等同于“CGRectZero”)
UIImageView *titleImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
titleImage.backgroundColor = [UIColor clearColor];
//初始化一个UILabel,并设置位置大小(计算尺寸是一门技术活,我也不太懂,😄,所以这里随便设置了一下,记得宽度等于屏幕宽)
UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 30, [[UIScreen mainScreen] bounds].size.width, 30)];
titleLabel.text = @"Register";
//字体颜色
titleLabel.textColor = [UIColor whiteColor];
//字体的大小适应label的宽度(很关键的地方)
titleLabel.adjustsFontSizeToFitWidth = YES;
//字体:粗体,字号:30
titleLabel.font = [UIFont boldSystemFontOfSize:22];
//位置:居中对齐
titleLabel.textAlignment = NSTextAlignmentCenter;
//将label放入image的视图中(即显示出来)
[titleImage addSubview:titleLabel];
return titleImage;
}
//组尾部高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 100;
}
//组尾部视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIImageView *buttonImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
buttonImage.backgroundColor = [UIColor clearColor];
//初始化一个button,类型为UIButtonTypeCustom(即自定义风格)
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
//位置大小
registerButton.frame = CGRectMake([[UIScreen mainScreen] bounds].size.width/10, 20, 300, 40);
//设置button颜色(把@“#4FAC74”转成UIColor)
registerButton.backgroundColor = [UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1];
[registerButton setTitle:@"REGISTER" forState:UIControlStateNormal];
//设置button的圆角效果
registerButton.layer.cornerRadius = registerButton.frame.size.height/8;
registerButton.imageView.layer.masksToBounds = YES;
[buttonImage addSubview:registerButton];
return buttonImage;
}
//cell的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//创建cell,标识符为:myCell,类型为:UITableViewCellStyleDefault
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];
//让cell背景透明
cell.backgroundColor = [UIColor clearColor];
//让cell的字体为白色
cell.textLabel.textColor = [UIColor whiteColor];
//cell的字体和大小
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:18];
if (indexPath.section == 0) {
if (indexPath.row == 0) {//名
//设置图标和文字内容
cell.imageView.image = [UIImage imageNamed:@"firstName"];
cell.textLabel.text = @"Your First Name";
}else if (indexPath.row == 1){//姓
cell.imageView.image = [UIImage imageNamed:@"lastName"];
cell.textLabel.text = @"Your Last Name";
}else if (indexPath.row == 2){//昵称
cell.imageView.image = [UIImage imageNamed:@"userName"];
cell.textLabel.text = @"Your User Name";
}else if (indexPath.row == 3){//密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Create Your Password";
}else if (indexPath.row == 4){//确认密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Re-enter Your Password";
}else if (indexPath.row == 5){//邮箱
cell.imageView.image = [UIImage imageNamed:@"email"];
cell.textLabel.text = @"Enter Your Email";
}
}
return cell;
}
@end
Step4:完善一些细节
-
现在,实现了添加标题和按钮:
实现注册页面(2)完成效果
但是因为不是太了解布局,也就是对于UI控件的布局距离位置还是不太熟悉,所以上图的两个控件都只是在iPhone6中看起来居中了而已,但其实并没有居中,也就是说当换成5s神马的机型,位置马上会偏移。
所有现在解决这个问题呢,我稍稍学了一下这个问题的解决方法,那就是调用当前UI控件的center属性,然后在center属性的CGPointMake中绑定一个父视图(比如当前屏幕)的x、y位置,这样就可以让这个UI控件一直居中。
//x、y位置
registerButton.center = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, 50);
这样就可以保证这个按钮永远对齐着当前屏幕的中心位置:
5s运行效果 6s运行效果无论屏幕尺寸如何变化,两个控件的位置始终处于正中间的位置。
2.在button按钮下面添加一段文字:
//button下面添加一段一段文字
UILabel *loginLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 250, 20)];//宽高
loginLabel.center = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, 80);//x、y轴
loginLabel.text = @"Already have an account?Login here";//文本
loginLabel.textColor = [UIColor whiteColor];//字体颜色
loginLabel.font = [UIFont boldSystemFontOfSize:22];//加粗,字体22
loginLabel.adjustsFontSizeToFitWidth = YES;//自适应lable宽度
[buttonImage addSubview:loginLabel];//添加到视图
button下放添加文字
- 将文字的"Login Here"变色
//让“Login here”变成绿色
NSMutableAttributedString *customStr = [[NSMutableAttributedString alloc]initWithString:loginLabel.text];//调用NSMutableAttributedString属性(自定义字符串)
[customStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1] range:NSMakeRange(24,loginLabel.text.length-24)];//设置颜色和要变色的部分
loginLabel.attributedText = customStr;//将自定义的字符串传给LoginLabel
让字符串的一部分变色
step5:自定义cell内容
UITableView默认的cell的显示方式有4种:
//cell的四种样式
//UITableViewCellStyleDefault, 只显示图片和标题
//UITableViewCellStyleValue1, 显示图片,标题和子标题(子标题在右边)
//UITableViewCellStyleValue2, 标题和子标题
//UITableViewCellStyleSubtitle 显示图片,标题和子标题(子标题在下边)
但是,需要实现的效果是这样的:
模仿页面所有默认的4种cell样式都不能实现这个效果,就必须要自定义cell的样式。
好吧,因为目前对自定义cell而言还是半知半解,所有就把cell的学习放到之后单独一篇学习笔记中吧。
这里关于UITableView的学习就到这里了。比较凌乱,但是自己还是get到一些实用的新技能。最主要最实在的还是边思考的同时又敲了代码,虽然并不算多,但是日积月累也可能是成长的一大步。
- 完整代码:
#import "ViewController.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) UITableView *registerTableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//调用自定义方法,创建tableView
[self createTableviews];
}
//代码创建一个UITableView
- (void)createTableviews{
//创建TableView
self.registerTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
//给UITableView设置背景图片
UIImageView *backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[backImageView setImage:[UIImage imageNamed:@"blurred_background"]];
self.registerTableView.backgroundView = backImageView;
//代理方法和数据源
self.registerTableView.delegate = self;
self.registerTableView.dataSource = self;
//添加到视图中(在屏幕里显示这个TableView)
[self.view addSubview:_registerTableView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//返回多少个Section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;//只有一组数据,所以只需要返回一个Section
}
//返回多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (section == 0) {
return 8;//需要8行数据
}else{
return 0;
}
}
//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
return 80;//为了比较直观,设置的比较大
}
return 0;
}
//组头部的高度(即这里的标题所在视图的高度)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 80;
}
//自定义组头部视图(即标题内容)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
//初始化一个UIImageView,(frame会被之后的label设置,所以可以随便设置,“CGRectMake(0, 0, 0, 0)”等同于“CGRectZero”)
UIImageView *titleImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
titleImage.backgroundColor = [UIColor clearColor];
//初始化一个UILabel,并设置位置大小(计算尺寸是一门技术活,我也不太懂,😄,所以这里随便设置了一下,记得宽度等于屏幕宽)
UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 30)];
titleLabel.center = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, 50);
titleLabel.text = @"Register";
//字体颜色
titleLabel.textColor = [UIColor whiteColor];
//字体的大小适应label的宽度(很关键的地方)
titleLabel.adjustsFontSizeToFitWidth = YES;
//字体:粗体,字号:30
titleLabel.font = [UIFont boldSystemFontOfSize:22];
//位置:居中对齐
titleLabel.textAlignment = NSTextAlignmentCenter;
//将label放入image的视图中(即显示出来)
[titleImage addSubview:titleLabel];
return titleImage;
}
//组尾部高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 100;
}
//组尾部视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIImageView *buttonImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
//image的背景颜色(clearColor即背景透明)
buttonImage.backgroundColor = [UIColor clearColor];
//初始化一个button,类型为UIButtonTypeCustom(即自定义风格)
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
//大小
registerButton.frame = CGRectMake(0,0, 300, 40);
//x、y位置
registerButton.center = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, 30);
//设置button颜色(把@“#4FAC74”转成UIColor)
registerButton.backgroundColor = [UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1];
[registerButton setTitle:@"REGISTER" forState:UIControlStateNormal];
//设置button的圆角效果
registerButton.layer.cornerRadius = registerButton.frame.size.height/8;
registerButton.imageView.layer.masksToBounds = YES;
[buttonImage addSubview:registerButton];
//button下面添加一段一段文字
UILabel *loginLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 250, 20)];//宽高
loginLabel.center = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, 65);//x、y轴
loginLabel.text = @"Already have an account?Login here";//文本
loginLabel.textColor = [UIColor whiteColor];//字体颜色
loginLabel.font = [UIFont boldSystemFontOfSize:22];//加粗,字体22
loginLabel.adjustsFontSizeToFitWidth = YES;//自适应lable宽度
[buttonImage addSubview:loginLabel];//添加到视图
//让“Login here”变成绿色
NSMutableAttributedString *customStr = [[NSMutableAttributedString alloc]initWithString:loginLabel.text];//调用NSMutableAttributedString属性(自定义字符串)
[customStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:79/255.f green:172/255.f blue:116/255.f alpha:1] range:NSMakeRange(24,loginLabel.text.length-24)];//设置颜色和要变色的部分
loginLabel.attributedText = customStr;//将自定义的字符串传给LoginLabel
return buttonImage;
}
//cell的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//创建cell,标识符为:myCell,类型为:UITableViewCellStyleDefault
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];
//让cell背景透明
cell.backgroundColor = [UIColor clearColor];
//让cell的字体为白色
cell.textLabel.textColor = [UIColor whiteColor];
//cell的字体和大小
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:18];
if (indexPath.section == 0) {
if (indexPath.row == 0) {//名
//设置图标和文字内容
cell.imageView.image = [UIImage imageNamed:@"firstName"];
cell.textLabel.text = @"Your First Name";
}else if (indexPath.row == 1){//姓
cell.imageView.image = [UIImage imageNamed:@"lastName"];
cell.textLabel.text = @"Your Last Name";
}else if (indexPath.row == 2){//昵称
cell.imageView.image = [UIImage imageNamed:@"userName"];
cell.textLabel.text = @"Your User Name";
}else if (indexPath.row == 3){//密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Create Your Password";
}else if (indexPath.row == 4){//确认密码
cell.imageView.image = [UIImage imageNamed:@"password"];
cell.textLabel.text = @"Re-enter Your Password";
}else if (indexPath.row == 5){//邮箱
cell.imageView.image = [UIImage imageNamed:@"email"];
cell.textLabel.text = @"Enter Your Email";
}
}
return cell;
}
@end
下一篇,自动布局((AutoLayout)的"深入"学习,加油!