UITableView,label自适应高度,拉伸图片,三目运算,UITextField,UIControl
{
UITableView *table;
UIView *inputView;
UITextField *tf;
UIControl *control;
}
- (void)viewDidLoad {
[super viewDidLoad];
//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];
table.delegate=self;
table.dataSource=self;
[self.view addSubview:table];
table.showsVerticalScrollIndicator=NO;
table.separatorStyle=UITableViewCellSeparatorStyleNone;
[self setInputView];
dataArray= [[NSMutable Arrayalloc]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 {
UITableViewCell *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;
[tf addTarget:self action:@selector(keyboardDown) forControlEvents:UIControlEventEditingDidEndOnExit];
[inputView addSubview:tf];
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];
}
- (void)textFieldDidBeginEditing:(UITextField*)textField {
[UIView beginAnimations:nil context: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:[[UIScreen mainScreen] bounds]];
[control addTarget:self action:@selector(keyboardDown) forControlEvents:UIControlEventTouchUpInside];
[self.view insertSubview:control belowSubview:inputView];
if(dataArray.count> 0) {
NSIndexPath *path = [NSIndexPath indexPathForRow:dataArray.count- 1 in Section:0];
[table scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
}
- (void)keyboardDown {
[control removeFromSuperview];
[self.view endEditing:YES];
[UIView beginAnimations:nil context: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;
}
//label自适应高度
//三目运算
isMe = !isMe;
NSString * isMeStr = isMe == YES ? @"�" : @"☀️";
NSString * inputMessageStr = tf.text;
//换行符\n 20
NSString * showMessage = [NSString stringWithFormat:@"%@ :\n%@",isMeStr,inputMessageStr];
//NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin可单设置一个,最好是两个都写上
//系统默认字体17号,如果自定义字体大小,当字数超出容器时会显示...
CGRect rect = [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, 200, height + 20)];
messageView.tag= 101;
NSString *imageName = isMe == YES? @"bubbleSelf" : @"bubble";
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, height + 20)];
UIImage *oldImage = [UIImage imageNamed:imageName];
UIImage *newImage = [oldImage stretchableImageWithLeftCapWidth:20 topCapHeight:10];
imageView.image= newImage;
[messageView addSubview:imageView];
UILabel *lb = [[UILabel alloc] initWithFrame:CGRectMake(I+10,5, 170, height)];
lb.text= showMessage;
lb.numberOfLines= 0;
[messageView addSubview:lb];
CGFloat H = 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= [UIImage imageNamed:@"5.jpg"];
[headImage addSubview:Head];
[messageView addSubview:headImage];
[dataArray addObject:messageView];
[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;
}