ios tableview 滑动了多少

 我来答
榕地者风和7
2017-11-10 · 超过30用户采纳过TA的回答
知道答主
回答量:90
采纳率:21%
帮助的人:25.5万
展开全部
scrollView:
1. 介绍scrollView些属性
1>.要想使用scrollView必须做两件事
1).设置scrollView内容
2).设置contentSize (滚范围)
2>.其属性
1). contentOffset(滚位置)
2). contentInset(额外增加滚区域)
3). bounces (设置UIScrollView否需要弹簧效)
4). crollEnabled (设置UIScrollView否能滚)
5). showsHorizontalScrollIndicator (否显示水平滚条)
6). showsVerticalScrollIndicator (否显示垂直滚条)
2. 代理
1>代理思想两思想
1).监听思想:B监听A发事情
2).通知思想:A发些事情要通知B做
2>scrollView代理使用
1).何代理(三步)
*声明协议 *设置代理象self.scrollView.delegate = self; *实现协议
2).代理监听scrollView拖拽事件
// 始拖拽 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; // 结束拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; // scrollView滚执行 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
3).用代理实现缩放
*UIScrollView代理() *设置缩放象(通viewForZoomingInScrollView) *设置缩放范围(maximumZoomScale、minimumZoomScale)
3. 定器创建两种式
1>. self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector() userInfo:nil repeats:YES]; 另scrollView运行,停止定器scrollView,能执行scrollView.
2>. self.timer = [NSTimer timerWithTimeInterval:1.f target:self selector:@selector() userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
4. 自定义协议并使用
1>.定义协议(三步)
*定义protocol(两种optional[代理象实现]、required[代理象必须实现])
*增加代理属性(weak) @property (weak, nonatomic) id delegate;
*给代理发消息调用代理(需要判断代理象否实现该判断调用(编译)报错) 注意:定义协议名称命名[类名+Delegate]、协议命名规范[名称需要掉前缀并且自作参数]
2>.使用代理(三步)
*声明协议
*设置代理象
*实现协议(本例代理象[控制器] 添加UILabel)
tableView:
1. UITableView 需要设置数据源才能显示数据
1>.向数据源查询共少组,每组少行,每行显示数据
2>.数据源必须遵守UITableViewDateSource协议
3> 共少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{} 第section组少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{} 每行显示内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{} 第section组部显示标题 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{} 第section组底部显示标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{} 每行cell高度致候使用代理设置cell高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{} 每行cell高度致候使用属性设置cell高度
self.tableView.rowHeight = 60; 优化内存变数组定义
NSMutableArray *models = [NSMutableArray arrayWithCapacity : (NSUInteger)]
2. cell见属性
1>.cell.textLabel.text 标题
2>.cell.detailTextLabel.text 介绍
3>.cell.imageView.image 图片
4>.cell.accessoryView 辅助视图
5>.cell.accessoryView 自定义辅助视图
6>.cell.backgroundView 设置cell背景颜色
1).通backgroundColor backgroundView都设置cell背景
2).backgroundView 优先级比 backgroundColor高
3).所同设置backgroundColorbackgroundView, backgroundView盖住backgroundColor
7>.cell.selectedBackgroundView 设置选状态背景
3. UITableView见属性
1>. tableview.separatorStyle 设置割线式
2>. tableview.separatorColor 设置割线颜色 自定义颜色
[UIColor colorWithRed:色值/255.f green:色值/255.f blue:色值/255.f alpha:色值/255.f];
获取屏幕宽度: [UIScreen mainScreen].bounds.size.width;
3>. tableview.tableHeaderView 设置tableView部视图 般用于放广告
4>. tableview.tableFooterView 设置tableView底部视图 般用于放置加载更按钮
5>. [self.tableView reloadData]; 刷新表格 // 刷新指定行
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0]; [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationRight];
4. 优化cell
1>.先缓存池查找否满足条件Cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
2>.缓存池没符合条件cell,自创建Cell if (nil == cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier]; }
3>.创建Cell, 并且设置唯标记 : identifier 注 : 定义变量 NSString *identifier 推荐用 static定义静态局部变量,推荐用宏.
4>.设置cell数据并返cell
5. tableView代理
1>. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{} //某行选候调用
2>. - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{} //某行取消选候调用
3>. UIAlertView些属性代理
1). UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"修改数据" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; //创建弹窗
2). alert.alertViewStyle = UIAlertViewStyle...; //设置alert式, 让alert显示uitextfield
3). UITextField *textField = [alert textFieldAtIndex:0]; //获取alerttextfield
4). [alert show]; //显示弹窗
5). - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{} // alertView按钮点击候调用
6. 自定义cell两种式
1>. 纯代码:每cell控件数位置
2>. 通xib: cell且固定界面 加载xib式:
1). [[[NSBundle mainBundle] loadNibNamed:@"xib名" owner:nil options:nil] firstObject];
2).UINib *nib = [UINib nibWithNibName:@"xib名" bundle:nil]; UIView *view = [[nib instantiateWithOwner:nil options:nil]firstObject]; 3>. 延迟调用 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ }); 4>.init通代码创建控件候才调用; awakeFromNib控件通xib或者storyboard创建候才调用
5>. 协议规范 协议名称 : 控件名称 + Delegate 协议名称:控件名称掉前缀 + 含义 协议自(触发发放)控件传目便用于区哪控件触发该
6>. 代码创建控件,添加contentView [self.contentView addSubview:控件];
7>. 计算文字宽高 CGSize *maxSize = CGSizeMake(300, MAXFLOAT); // 设置文字范围 NSDictionary *dict = @{NSFontAttributeName : font}; // 字体 // 计算文字范围超指定范围,返指定范围 // 计算文字范围于指定范围, 返真实范围 CGSize size = [NSString *str boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size; // 计算文字宽高
8>.通代码自定义cell
1).新建继承自UITableViewCell类
2).重写initWithStyle:reuseIdentifier: 添加所需要显示控件(需要设置控件数据frame, 控件要添加contentView) 进行控件性属性设置(些属性需要设置, 比字体\固定图片)
3).提供2模型 数据模型: 存放文字数据\图片数据 frame模型: 存放数据模型\所控件frame\cell高度 4).cell拥frame模型(要直接拥数据模型)
5).重写frame模型属性setter: 设置控件显示数据frame
6).frame模型数据初始化已经采取懒加载式(每cell应frame模型数据加载)
7. 通知机制
1>. 通知(NSNotificationCenter) 每应用程序都通知(NSNotificationCenter)实例专门负责协助同象间消息通信 创建通知 NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
2>. 完整通知般包含3属性: - (NSString *)name; // 通知名称 - (id)object; // 通知发布者(谁要发布通知) - (NSDictionary *)userInfo; // 些额外信息(通知发布者传递给通知接收者信息内容)
3>. 初始化通知(NSNotification)象 + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject; + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo; - (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;
4>. 通知(NSNotificationCenter)提供相应发布通知 - (void)postNotification:(NSNotification *)notification; // 发布notification通知notification象设置通知名称、通知发布者、额外信息等 - (void)postNotificationName:(NSString *)aName object:(id)anObject; // 发布名称aName通知anObject通知发布者 - (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo; // 发布名称aName通知anObject通知发布者aUserInfo额外信息
5>.注册通知监听器(Observer) - (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject; observer:监听器即谁要接收通知 aSelector:收通知调监听器并且通知象做参数传入 aName:通知名称nil论通知名称监听器都能收通知 anObject:通知发布者anObjectaName都nil监听器都收所通知
6>. 取消注册通知监听器 通知保留(retain)监听器象通知注册象必须该象释放前取消注册否则相应通知再现通知仍向该监听器发送消息相应监听器象已经释放所能导致应用崩溃 - (void)removeObserver:(id)observer; - (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject; 般监听器销毁前取消注册(监听器加入列代码): - (void)dealloc { //[super dealloc]; 非ARC需要调用句 [[NSNotificationCenter defaultCenter] removeObserver:self]; }
7>. 通知代理选择
1).共同点
利用通知代理都能完象间通信
2).同点
代理 : 关系(1象能告诉另1象发事情)
通知 : 关系(1象能告诉N象发事情, 1象能知N象发事情)
8. 键盘通知 UIKeyboardWillShowNotification // 键盘即显示 UIKeyboardDidShowNotification // 键盘显示完毕 UIKeyboardWillHideNotification // 键盘即隐藏 UIKeyboardDidHideNotification // 键盘隐藏完毕 UIKeyboardWillChangeFrameNotification // 键盘位置尺寸即发改变 UIKeyboardDidChangeFrameNotification // 键盘位置尺寸改变完毕 附带跟键盘关额外信息(字典),字典见key: UIKeyboardFrameBeginUserInfoKey // 键盘刚始frame UIKeyboardFrameEndUserInfoKey // 键盘终frame(画执行完毕) UIKeyboardAnimationDurationUserInfoKey // 键盘画间 UIKeyboardAnimationCurveUserInfoKey // 键盘画执行节奏(快慢) 9. 其 1>. 控件显示排错
1).查看否调用添加
2).frame空(没设置frame)
3).hidden 否yes
4).alpha <=0.1
5).没添加父控件
6).查看夫控件没几点 凡init获取frame都0 - (void)layoutSubviews { [super layoutSubviews]; // 该控件frame改变候调用 // 该般用于调整控件位置 } 2>. // 已经添加父视图候调用 - (void)didMoveToSuperview { } // 即添加父视图候调用 - (void)willMoveToSuperview:(UIView *)newSuperview { }
3> UITextField添加左右视图 self.textField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 0)]; // 设置左边视图显示模式 self.textField.leftViewMode = UITextFieldViewModeAlways; self.textField.rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 0)]; // 设置右边视图显示模式 self.textField.rightViewMode = UITextFieldViewModeAlways;
4>. // 设置btn图片填充整imageview btn.imageView.contentMode = UIViewContentModeCenter; // 超范围图片要剪切 // btn.imageView.clipsToBounds = NO; btn.imageView.layer.masksToBounds = NO;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美狐美颜sdk
2024-08-06 广告
山东小狐狸网络科技有限公司旗下的美狐美颜sdk主要是针对不同需求、预算的客户,为他们提供自由选择的购买方式,能够真正地以平台和用户需求出发;美狐将美颜SDK功能、种类进行区分,将其分为两个版本:基础版和专业版,版本不同,从而选择效果佳、性价... 点击进入详情页
本回答由美狐美颜sdk提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式