聊天气泡
//self.title = @"☀️☀️☀️";
//self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:85/225.0 green:105/225.0 blue:77/225.0 alpha:0.2];
//消除导航栏的东西
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:0];
//消除导航栏下的分隔线
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.automaticallyAdjustsScrollViewInsets = NO;
self.view.backgroundColor = [UIColor whiteColor];
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0,WIDTH,HIGHT) style:UITableViewStyleGrouped];
[table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
table.backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,WIDTH,HIGHT)];
UIImageView * backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,WIDTH,HIGHT)];
backgroundImageView.image = [UIImage imageNamed:@"7.jpg"];
[table.backgroundView addSubview:backgroundImageView];
[backgroundImageView release];
table.delegate = self;
table.dataSource = self;
[self.view addSubview:table];
table.showsVerticalScrollIndicator = NO;
table.separatorStyle = UITableViewCellSeparatorStyleNone;
[self setInputView];
dataArray = [[NSMutableArray alloc] init];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return dataArray.count;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return0.1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCel l* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
cell.backgroundColor = [UIColor clearColor];
cell.selectionStyle =UITableViewCellSelectionStyleNone;
if(cell) {
UIView * oldView = [cell viewWithTag:101];
[oldView removeFromSuperview];
}
UIView * newView = [dataArray objectAtIndex:indexPath.row];
[cell addSubview:newView];
return cell;
}
-(void)setInputView {
inputView = [[UIView alloc] initWithFrame:CGRectMake(0,HIGHT- 44,WIDTH, 44)];
[self.view addSubview:inputView];
tf = [[UITextField alloc] initWithFrame:CGRectMake(10, 2,WIDTH- 65, 40)];
tf.backgroundColor = [UIColor clearColor];
//tf.textAlignment = NSTextAlignmentCenter;
tf.clearButtonMode=UITextFieldViewModeWhileEditing;
tf.borderStyle = UITextFieldViewModeAlways;
tf.delegate = self;
[tfa ddTarget:selfaction:@selector(keyboardDown) forControlEvents:UIControlEventEditingDidEndOnExit];
[inputView addSubview:tf];
[tf release];
UIButton* bt = [[UIButton alloc] initWithFrame:CGRectMake(WIDTH- 50, 2, 40, 40)];
bt.layer.cornerRadius = 12;
bt.layer.masksToBounds =YES;
[bt setBackgroundImage:[UIImage imageNamed:@"7.jpg"] forState:UIControlStateNormal];
[bt addTarget:self action:@selector(SendMessage) forControlEvents:UIControlEventTouchUpInside];
[inputView addSubview:bt];
[bt release];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:0.33];
table.frame = CGRectMake(0, 0,WIDTH,HIGHT-216-36-5);
inputView.frame = CGRectMake(0,HIGHT-216-36-5-44,WIDTH, 44);
[UIView commitAnimations];
control = [[UIControl alloc] initWithFrame:[[UIScreenmainScreen]bounds]];
[control addTarget:self action:@selector(keyboardDown) forControlEvents:UIControlEventTouchUpInside];
[self.view insertSubview:controlbelowSubview:inputView];
if(dataArray.count> 0) {
NSIndexPath * path = [NSIndexPath indexPathForRow:dataArray.count- 1 inSection:0];
[table scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
}
-(void)keyboardDown {
[control removeFromSuperview];
[self.view endEditing:YES];
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:0.15];
table.frame = CGRectMake(0, 0,WIDTH,HIGHT);
inputView.frame = CGRectMake(0,HIGHT-44,WIDTH, 44);
[UIView commitAnimations];
}
-(void)SendMessage {
//判断如果文本框无输入内容就返回跳出这个方法
if([tf.text isEqualToString:@""]) {
return;
}
isMe = !isMe;
//三目运算
NSString* isMeStr = isMe == YES?@"�":@"☀️";
NSString * inputMessageStr = tf.text;
//换行符\n 20
NSString * showMessage = [NSString stringWithFormat:@"%@ :\n%@",isMeStr,inputMessageStr];
CGRectrect = [showMessage boundingRectWithSize:CGSizeMake(170, 500) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]} context:nil];
CGFloat height = rect.size.height+ 20;
CGFloat X = isMe == YES?WIDTH- 250: 10;
UIView * messageView = [[UIView alloc] initWithFrame:CGRectMake(X, 0, 240, height + 20 +40)];
messageView.tag = 101;
NSString* imageName = isMe == YES?@"bubbleSelf":@"bubble";
CGFloatI = isMe == YES? 15 : 25;
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(I, 0, 200, height + 20)];
UIImage* oldImage = [UIImage imageNamed:imageName];
UIImage* newImage = [oldImage stretchableImageWithLeftCapWidth:20 topCapHeight:10];
imageView.image = newImage;
[messageView addSubview:imageView];
[imageView release];
UILabel* lb = [[UILabel alloc] initWithFrame:CGRectMake(I+10,5, 170, height)];
lb.text = showMessage;
lb.numberOfLines = 0;
[messageView addSubview:lb];
[lb release];
CGFloatH = isMe == YES? messageView.frame.size.width- 40:0;
UIView* headImage = [[UIView alloc] initWithFrame:CGRectMake(H, messageView.frame.size.height-40, 40, 40)];
headImage.layer.cornerRadius = 20;
headImage.layer.masksToBounds =YES;
UIImageView* Head = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 40, 40)];
Head.image = [UIImageimageNamed:@"5.jpg"];
[headImage addSubview:Head];
[Head release];
[messageView addSubview:headImage];
[headImagerelease];
[dataArrayaddObject:messageView];
[messageView release];
[table reloadData];
NSIndexPath * path = [NSIndexPath indexPathForRow:dataArray.count- 1inSection:0];
[table scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];
tf.text = nil;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UIView * V = dataArray[indexPath.row];
return V.frame.size.height+22;
}