【iOS】暑假第三周任务总结

文章目录

  • 折叠cell
  • 聊天室
  • 弹出键盘,屏幕上移
  • 管理系统
  • 属性关键字

折叠cell

完善了share里关于折叠cell的使用

  • 在share里写的折叠cell比较简单,仅仅使用一个button控制一个tableViewframe,在button关闭时,tableViewframe只是显示第一个cell,当button开启时,改变tableViewframe,将tableView中的cell全部显示出来

聊天室

补充了share里的私信功能

  • 难点:将每发出的一条信息能获取该信息的所占用的高度,然后将高度值传给每个cellheight
    • 用到了[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】属性关键字

你可能感兴趣的:(ios)