聊天对话

#import "AppDelegate.h"

.h

//创建页面视图

ViewController *vc = [[ViewController alloc]init];

//创建导航器对象

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];

//修改窗口根视图

self.window.rootViewController = nav;

#import "ViewController.h"

.h

#import "Message.h"

#import "MyTableViewCell.h"


<UITableViewDataSource,UITableViewDelegate>

{

//定义数组、表格、底部视图

NSMutableArray *array;

UITableView *tableview;

UIView *bottomview;

}

[super viewDidLoad];

//设置导航标题

self.navigationItem.title = @"周宇航";

//设置背景颜色

self.view.backgroundColor = [UIColor whiteColor];

//创建消息对象1并初始化

Message *m1 = [[Message alloc]init];

m1.imageName = @"1 14.jpg";

m1.message = @"谢谢了";

m1.backgroudImageName = @"2 6.jpg";

//创建消息对象2并初始化

Message *m2 = [[Message alloc]init];

m2.imageName = @"1 18.jpg";

m2.message = @"客气";

m2.backgroudImageName = @"2 7.png";

m2.isMyWords = YES;

//初始化数组

array = [NSMutableArray arrayWithObjects:m1,m2, nil];

//创建表格

tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-444)];

//设置代理

tableview.dataSource = self;

tableview.delegate = self;

//加入当前视图

[self.view addSubview:tableview];

//创建底部视图

bottomview = [[UIView alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-88, self.view.frame.size.width, 88)];

//加入当前视图

[self.view addSubview:bottomview];

//创建滚动文本框

UITextView *textview = [[UITextView alloc]initWithFrame:CGRectMake(10, 0, self.view.frame.size.width-20, 44)];

//设置代理

textview.delegate = self;

//设置背景颜色

textview.backgroundColor = [UIColor cyanColor];

//设置键盘类型

textview.returnKeyType = UIReturnKeySend;

//加入底部视图

[bottomview addSubview:textview];

//创建工具栏

UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(10, 44, self.view.frame.size.width-20, 44)];

//创建按钮1

UIBarButtonItem *item1 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"3.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item1.tag = 10;

//创建按钮2

UIBarButtonItem *item2 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"4.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item2.tag = 11;

//创建按钮3

UIBarButtonItem *item3 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"5.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item3.tag = 12;

//创建按钮4

UIBarButtonItem *item4 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"6.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item4.tag = 13;

//创建按钮5

UIBarButtonItem *item5 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"4.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item5.tag = 14;

//创建按钮6

UIBarButtonItem *item6 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"3.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toolbarItemClicked:)];

item6.tag = 15;

//添加按钮到导航条

self.navigationItem.rightBarButtonItems = @[item5,item6];

//加入工具条

toolbar.items = @[item1,item2,item3,item4];

//加入底部视图

[bottomview addSubview:toolbar];

}

#pragma mark UITableViewDataSource

//设置行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return array.count;

}

//设置单元格内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

//创建静态字符串

static NSString *string = @"Cell";

//根据字符串查找可复用单元格

MyTableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:string];

//创建复用池

if (!cell) {

cell = [[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:string];

}

//获取消息对象

Message *m = array[indexPath.row];

//设置头像视图

cell.imageview.image = [UIImage imageNamed:m.imageName];

//设置消息

cell.label.text = m.message;

//设置消息背景视图

cell.backgroudImageView.image = [UIImage imageNamed:m.backgroudImageName];

if (m.isMyWords == YES) {

cell.imageview.frame = CGRectMake(self.view.frame.size.width-44, 0, 34, 34);

cell.backgroudImageView.frame = CGRectMake(self.view.frame.size.width-130, 0, 80, 34);

}

return cell;

}

#pragma mark UITextViewDelegate

//设置点击滑动文本框响应方法

- (void)textViewDidBeginEditing:(UITextView *)textView

{

//开始动画

[UIView beginAnimations:@"up" context:nil];

//设置持续时间

[UIView setAnimationDuration:0.25];

//设置视图位置

[bottomview setFrame:CGRectMake(0, self.view.frame.size.height-380, self.view.frame.size.width, 380)];

//结束动画

[UIView commitAnimations];

}

//设置编辑响应方法

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

{

//换行的时候

if ([text  isEqualToString: @"\n"])

{

//设置键盘收回

[self.view endEditing:YES];

//开始动画

[UIView beginAnimations:@"down" context:nil];

//设置持续时间

[UIView setAnimationDuration:0.25];

//设置视图位置

[bottomview setFrame:CGRectMake(0, self.view.frame.size.height-88, self.view.frame.size.width, 88)];

//结束动画

[UIView commitAnimations];

//消息非空

if (textView.text.length != 0) {

//创建消息对象

Message *m = [[Message alloc]init];

//给消息赋值

m.imageName = @"1 18.jpg";

m.message = textView.text;

m.backgroudImageName = @"2 7.png";

m.isMyWords = YES;

//加入数组

[array addObject:m];

//刷新表格

[tableview reloadData];

//显示表格底部

[tableview scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:array.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];

textView.text = nil;

}

return NO;

}else{

return YES;

}

}

//设置工具条按钮响应方法

- (void)toolbarItemClicked:(UIBarButtonItem *)item

{

NSLog(@"%ld",item.tag);

}

创建MyTableViewCell继承UITableViewCell

.h

//定义属性头像视图、背景图片视图、标签

@property (nonatomic,strong)UIImageView *imageview;

@property (nonatomic,strong)UIImageView *backgroudImageView;

@property (nonatomic,strong)UILabel *label;

.m

//重写初始化方法

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

[self addSubview:self.imageview];

[self addSubview:self.backgroudImageView];

}

return self;

}

//初始化头像视图

- (UIImageView *)imageview

{

if (!_imageview) {

_imageview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 5, 34, 34)];

//设置半径

_imageview.layer.cornerRadius = 17;

//设置边框模式

_imageview.layer.masksToBounds = YES;

}

return _imageview;

}

//初始化背景图片视图

- (UIImageView *)backgroudImageView

{

if (!_backgroudImageView) {

_backgroudImageView = [[UIImageView alloc]initWithFrame:CGRectMake(60, 5, 80, 34)];

//设置半径

_backgroudImageView.layer.cornerRadius = 10;

//设置边框模式

_backgroudImageView.layer.masksToBounds = YES;

//创建标签

_label = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 60, 24)];

//加入图片视图

[self.backgroudImageView addSubview:self.label];

}

return _backgroudImageView;

}

创建Message继承NSObject

.h

//定义属性头像、消息、背景图片、发送人

@property (nonatomic,strong)NSString *imageName;

@property (nonatomic,strong)NSString *message;

@property (nonatomic,strong)NSString *backgroudImageName;

@property (nonatomic,assign)BOOL isMyWords;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容