折叠cell
完善了share里关于折叠cell的使用
- 在share里写的折叠cell比较简单,仅仅使用一个
button
控制一个tableView
的frame
,在button
关闭时,tableView
的frame
只是显示第一个cell
,当button开启时,改变tableView
的frame
,将tableView
中的cell
全部显示出来
聊天室
补充了share里的私信功能
- 难点:将每发出的一条信息能获取该信息的所占用的高度,然后将高度值传给每个
cell
的height
-
- 用到了
[boundingRectWithSize: options: attributes: context:]
参数p1:文本显示的最大宽度和最大高度
参数p2:计算的类型NSStringDrawingUsesLineFragmentOrigin
绘制文本时使用,一般使用这项
参数P3:文本属性
参数P4:包括一些信息,例如如何调整字间距以及缩放。该参数一般可为nil
- 用到了
-
- 然后将获得的文本行高存入数组,在设置单元格高度的时候取出来用
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
//将NSNumber型的height转换为CGFloat型
CGFloat height = [_heightOfRowArray[indexPath.row] floatValue];
return height;
}
- 难点:在按下发送按钮后,将每发出的信息放置在
tableView
的最后一个单元格,并随着消息的发送,单元格界面上移 -
- 用到了
cell
的插入,获取最后一行单元格的索引,然后将新创建的一个cell
直接插入在最后一个单元格的后面
- 用到了
//_messageArr.count - 1 : 显示的最后一行
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(_ChatArray.count - 1) inSection:0];
//加入一个cell
[_privateChatTableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationBottom];
-
- 随着消息发送,界面上移用到了滚动方法
//滚动界面(随着消息发送上移)
[_privateChatTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
弹出键盘,屏幕上移
在输入textField
时,有时候开启键盘后会挡住textField
的视图,所以要用到弹出后屏幕上移
- 要到
textField
的代理协议,在开始编辑和结束编辑的函数中控制屏幕的坐标
//开始编辑时
- (void)textFieldDidBeginEditing:(UITextField *)textField {
CGFloat offset = self.view.frame.size.height - (textField.frame.origin.y + textField.frame.size.height + 556);
[UIView animateWithDuration:0.2 animations:^{
CGRect frame= self.view.frame;
frame.origin.y = offset;
self.view.frame = frame;
}];
}
//结束编辑时
- (void)textFieldDidEndEditing:(UITextField *)textField {
[UIView animateWithDuration:0.3 animations:^{
//这样不行,不能直接修改origin
//self.view.frame.origin.y=0.0;
CGRect frame = self.view.frame;
frame.origin.y = 0.0;
self.view.frame = frame;
}];
}
管理系统
界面间对存储的学生信息进行传值,对存储的学生数据进行增删改查
- 学习了几种传值方式,在增删查改界面切换间传入传出存储的学生信息
【iOS】多界面传值的五种方法
属性关键字
在声明属性时,用到了不同的属性关键字修饰
【iOS】属性关键字