share中简单聊天界面的实现<代码>

关于share中简单聊天界面的实现(韩笑)

主要是用UITableView来实现,先用要发送的消息自适应获得尺寸,在cell上加聊天内容。


#import "chatViewController.h"

@interface chatViewController ()<UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate>
{
    UIView *_textView;       //最底下的输入视图
    UITextField *_textField; //输入框
    NSMutableArray *_array;  //存储发过的消息
    UITableView *_tableView; //消息界面
}

@end

@implementation chatViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    _array=[[NSMutableArray alloc]initWithCapacity:0];

    _tableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 375, 633) style:UITableViewStylePlain];
    _tableView.delegate=self;
    _tableView.dataSource=self;
    [self.view addSubview:_tableView];

    _textView=[[UIView alloc]initWithFrame:CGRectMake(0, 600, 375, 44)];
    _textView.backgroundColor=[UIColor redColor];
    [self.view addSubview:_textView];

    _textField=[[UITextField alloc]initWithFrame:CGRectMake(10, 5, 310, 34)];
    _textField.borderStyle=UITextBorderStyleRoundedRect;
    _textField.delegate=self;
    [_textView addSubview:_textField];

    UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame=CGRectMake(320, 5, 55, 34);
    [button setTitle:@"发送" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(sendMessage) forControlEvents:UIControlEventTouchUpInside];
    [_textView addSubview:button];
}

-(void)sendMessage{
    NSDictionary *dictionary=@{NSFontAttributeName:[UIFont systemFontOfSize:18]};
    CGSize size=[_textField.text boundingRectWithSize:CGSizeMake(305, 10000) options:NSStringDrawingTruncatesLastVisibleLine attributes:dictionary context:nil].size; //自适应尺寸

    UIView *view=[[UIView alloc]initWithFrame:CGRectMake(255-size.width, 0, size.width+90, size.height+60)];
    view.tag=121; //view是cell上加的视图

    UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 15, size.width+40, size.height+30)];
    imageView.image=[UIImage imageNamed:@"chat1"];
    [view addSubview:imageView]; //气泡的图片加到view

    UILabel *lable=[[UILabel alloc]initWithFrame:CGRectMake(20, 15, size.width, size.height)];
    lable.text=_textField.text;
    lable.font=[UIFont systemFontOfSize:18];
    lable.numberOfLines=0;
    [imageView addSubview:lable]; //聊天内容加到气泡上

    UIImageView *headImageView=[[UIImageView alloc]initWithFrame:CGRectMake(size.width+40, 10, 60, 60)];
    headImageView.image=[UIImage imageNamed:@"sixin_img1"];
    [view addSubview:headImageView]; //用户头像

    [_array addObject:view]; //将view加到数组中
    [_tableView reloadData]; //刷新数据

    [_tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionBottom animated:YES]; //滑动viewController到最后一行

    _textField.text=@""; //textField内容清空
}

//编辑开始时开启动画上移textView和tableView,给键盘留出空间
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.2];

    _textView.frame=CGRectMake(0, 340, 375, 44);
    _tableView.frame=CGRectMake(0, 0, 375, 500);

    [UIView commitAnimations];

    return YES;
}

//编辑完成时开启动画下移textView和tableView
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.2];

    _textView.frame=CGRectMake(0, 623, 375, 44);
    _tableView.frame=CGRectMake(0, 0, 375, 633);

    [UIView commitAnimations];
    [textField resignFirstResponder];

    return YES;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return _array.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIdentifier=@"cell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        cell.selectionStyle=UITableViewCellSelectionStyleNone;
    }
    UIView *cellView=[cell.contentView viewWithTag:121];
    [cellView removeFromSuperview];

    UIView *view=[_array objectAtIndex:indexPath.row];
    [cell.contentView addSubview:view]; //在cell上加聊天内容

    return cell;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    UIView *view=[_array objectAtIndex:indexPath.row];
    return view.frame.size.height; //返回cell行高
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值