#define MAS_SHORTHAND_GLOBALS
#import "Masonry.h"
(1)表格式图 UITableView
(2) 滚动视图 UIScrollView
(3) 文本编辑框 UITextField
(4) 书页控制 UIPageControl
(5) 加减控件 UIStepper
(6) 进度条 UIProgressView
(7) 滑动条 UISlider
(8) 开关 UISwitch
(9) 忙提示 UIActivityIndicatorView
(10) 分段控制器 UISegmentedControl
dataSource是数据源协议,用来连接数据库,重用池等的。
delegate是代理函数协议
self.tableView.delegate = A类创建的对象 ; self.tableView.dataSource = self ;
表示:A类实现了这个tableView的代理协议,self(当前类对象)实现了tableView的数据源协议。
——————————————————————————————————————————————————————
(1) 表格式图 UITableView
//弹簧开关
_table.bounces =NO;
//滚动指示条风格设置 -黑色 或白色
_scro.indicatorStyle =UIScrollViewIndicatorStyleBlack;
//隐藏滚动指示条
_scro.showsVerticalScrollIndicator =NO; //竖向
_scro.showsHorizontalScrollIndicator =NO; //横向
//开启自动滚动到最开始(当只有一个滚动视图时适用)
_scro.scrollsToTop =YES;
//内边距 =图片边缘 到视图框 的距离
_scro.contentInset =UIEdgeInsetsMake(20,20, 20,20);
//数据源协议:dataSoure专门负责数据的展示逻辑
_table.dataSource =self;
#pragma mark - 协议方法 <UITableViewDataSource>
/*
UITableView需要⼀一个数据源(dataSource)来显示数据,没有设置数据源的UITableView只是个空壳 ,
凡是遵守UITableViewDataSource协议的OC对象,都可以是UITableView的数据源
*/
//展示数据的过程
//1.一共有多少个分组,默认不写此方法,为1
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return2; // 2组
}
//2.每个分组中有多少行数据(必须实现)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return100; //100行
}
//3.每一行什么样子(必须实现)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSInteger section = indexPath.section ;// 获取组数
NSInteger row = indexPath.row; //获取行数
/*重用机制:
问题:100行数据,就要创建内存块100次,释放内存块100次。消耗资源
现象:同一时间,界面上最多显示17行数据。
向上滚动时,旧的cell会隐藏起来,新的cell会出现。而cell的结构一样,只是内容不一样。
解决:把旧的隐藏的cell放到一个容器里,当新的cell将要出现时,去容器里找一下有没有结构一样的旧cell,
拿出来改一改,显示出来。
*/
重用方式一:
[
//代理方法1:dataSoure专门负责数据的展示逻辑
_table.dataSource =self;
]
//从重用池中取出一个特定cell,赋值给 新建的cell对象
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"Nike"];
//如果cell指针为空,即重用池里没有这个特定指针
if (cell ==nil) {
//新建一个cell
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:@"Nike"];
}
/* @(indexPath.row)获取每行的值; stringValue 转换成NSString类型 */
cell.textLabel.text =@(indexPath.row).stringValue; //打印每行数据
if(row ==4){ //通过颜色测试查看重用效果,颜色相同表示用了同一个cell
cell.backgroundColor = [UIColorredColor];
}
重用方式二:
[
tableV.dataSource =self; //连接
//注册一个特定的cell给tableView
[tableV registerClass:[UITableViewCellclass] forCellReuseIdentifier:@“Nike”];
]
//这个新的重用方法,简化了老式方法的判断步骤(是否存在)
/*@(indexPath.row)获取每行的值 stringValue 转换成NSString类型 */
cell.textLabel.text =@(indexPath.row).stringValue; //打印每行数据
if(row ==4){ //通过颜色测试查看重用效果,颜色相同表示用了同一个cell
cell.backgroundColor = [UIColorredColor];
}
return cell;
}
(2) 滚动视图 UIScrollView
//设置缩放的比率
_scro.minimumZoomScale =0.5;
_scro.maximumZoomScale =2;
//代理
_scroV.delegate =self;
//关闭弹簧
_scro.bounces =NO;
#pragma mark - 协议方法
//滚动视图内,哪个视图可以接受手势缩放操作 Alt
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return [self.view viewWithTag:100]; //方式一,通过图片标识获取图片
return _imaV; //方式二,获取局部变量
}
//当视图滚动时触发
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//contentofSet:内容的偏移量
NSLog(@"坐标:%@",NSStringFromCGPoint(scrollView.contentOffset));
}
(3) 编辑框 UITextField
//设置边框风格-圆角
_textF.borderStyle =UITextBorderStyleRoundedRect;
//默认输入提示:请输入密码
_textF.placeholder =@"请输入密码";
//清空内容按钮,在编辑时出现
[_textFsetClearButtonMode:UITextFieldViewModeWhileEditing];
//光标切入,输入框清空
[_textF setClearsOnBeginEditing:YES];
//内容为密文
[_textF setSecureTextEntry:YES];
/键盘类型:纯英文+符号 样式:黑色
[_text setKeyboardType:UIKeyboardTypeASCIICapable];
[_text setKeyboardAppearance:UIKeyboardAppearanceDark];
//键盘返回按钮:GO
[_text setReturnKeyType:UIReturnKeyGo];
_textFiled.delegate =self; //代理
// 触摸 监听事件 (不是协议方法)
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//根据标签获取对象
UITextField *tf = (UITextField*)[self.viewviewWithTag:100];
[tfresignFirstResponder];//注销第一响应者。触摸空白位置,软键盘消失
[tfbecomeFirstResponder]; //编程第一响应者。触摸空白位置,软键盘显示
//UIView可以强制让内部的所有子视图,取消编辑状态
[self.viewendEditing:YES]; //是否强制取消编辑
}
#pragma mark - 协议 <UITextFieldDelegate>
//强制只能输入字母
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if([stringisEqualToString:@""]){
returnYES; //@“”空代表 退格键
}
//通过判断输入的字符的ASCII码,来判断是否是英文
constchar *s = [string cStringUsingEncoding:NSUTF8StringEncoding];
return (*s >='a' && *s<='z')||(*s >='A' && *s<='Z');
}
//编辑框显示
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
//1.软键盘消失
[_textFiledresignFirstResponder];
//2.把文本框的内容显示在屏幕中心的一个label上
_label.text =_textFiled.text;
return YES;
}
(4) 书页控制 UIPageControl
_pc.numberOfPages =9; //总页数
_pc.pageIndicatorTintColor = [UIColorgreenColor]; //底色颜色
_pc.currentPage =5; //当前页
_pc.currentPageIndicatorTintColor = [UIColorblueColor]; //当前页颜色
(5) 加减控件 UIStepper
_step.minimumValue =0; //最小值
_step.maximumValue =100; //最大值
_step.stepValue =20; //每次变量
_step.wraps =YES; //循环
(6) 进度条 UIProgressView
_pv.progress =0; //初始值
_pv.progressTintColor = [UIColorredColor]; //左颜色
_pv.trackTintColor = [UIColorlightGrayColor]; //右颜色
(进度条和滑动条要关联使用, 起始值- 结尾 : 0 - 1 )
- - - 方法
[[UIProgressViewalloc]initWithProgressViewStyle:UIProgressViewStyleBar]; //初始化
(7) 滑动条 UISlider
_slider.thumbTintColor = [UIColorblueColor]; //圆球颜色
_slider.maximumTrackTintColor = [UIColororangeColor]; //轨道颜色
_slider.minimumTrackTintColor = [UIColorblackColor]; //已划过轨道颜色
_slider.maximumValue =1; //最大值
_slider.minimumValue =0.1; //最小值
. value //获取值
(8) 开关 UISwitch
_sw.on =YES; //默认开的状态
_sw.thumbTintColor = [UIColorredColor]; //球颜色
_sw.onTintColor = [UIColororangeColor]; //开时颜色
.isOn //获取值(BOOL 类型)
(9) 忙提示 UIActivityIndicatorView
_aiv.color = [UIColorgreenColor]; //图标颜色
_aiv.hidesWhenStopped =NO; //动画停止时不隐藏
- - - 方法
[_ivstartAnimating]; //动画启动
[_ivstopAnimating]; //动画停止
//初始化 白色大图标
[[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
(10) 分段控制器 UISegmentedControl
_segment.selectedSegmentIndex =2; //默认选项 2为数组下标
[_segment insertSegmentWithTitle:@"工具"atIndex:2animated:YES];//数组下标2添加新选项
- - -方法
//初始化 ,传入数组
[[UISegmentedControlalloc] initWithItems:数组];
//获取当前选中的题目
NSString *title = [sendertitleForSegmentAtIndex:sender.selectedSegmentIndex];