Ios Objective-c中聊天界面的设计
我正在使用Objective-c在IOS中开发聊天应用程序。功能方面的每一个都可以,但我在设计上有一些困难 这是我的输出 我创建了两个单元格标识符来区分表视图中的消息类型 然后我在cellForRowAtIndexPath中修改它。像这样Ios Objective-c中聊天界面的设计,ios,objective-c,Ios,Objective C,我正在使用Objective-c在IOS中开发聊天应用程序。功能方面的每一个都可以,但我在设计上有一些困难 这是我的输出 我创建了两个单元格标识符来区分表视图中的消息类型 然后我在cellForRowAtIndexPath中修改它。像这样 - (void)viewDidLoad { [super viewDidLoad]; self.tableMainChatting.delegate = self; self.tableMainChatting.dataSource
- (void)viewDidLoad {
[super viewDidLoad];
self.tableMainChatting.delegate = self;
self.tableMainChatting.dataSource = self;
self.navigationBarTitle.topItem.title = self.visitorName;
self.tableMainChatting.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
// invoke visitor selected
delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate startChatting:self.visitorID VisitorName:self.visitorName VisitorTime:self.visitorStartTime];
[delegate InvokeGetCurrentChattingHistory:self.visitorID];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MessageItemObject *item = [messagesList objectAtIndex:indexPath.row];
if ([item.Type isEqualToString:@"Visitor"]) {
NSString *cellIdentifier = @"identify_visitor_chat";
UITableViewCell *cell = [self.tableMainChatting dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
UILabel *visitorMessage = (UILabel *)[cell viewWithTag:5030];
visitorMessage.text = item.Messagetext;
visitorMessage.layer.masksToBounds = YES;
visitorMessage.layer.cornerRadius = 5.0;
visitorMessage.frame =CGRectMake(visitorMessage.frame.origin.x, visitorMessage.frame.origin.y, 250, 60);
visitorMessage.font = [UIFont fontWithName:@"RobotoSlab-Bold" size:10];
visitorMessage.numberOfLines=0;
visitorMessage.lineBreakMode=NSLineBreakByWordWrapping;
[visitorMessage sizeToFit];
UILabel *messageTime = (UILabel *)[cell viewWithTag:5031];
messageTime.text = item.MessageTime;
return cell;
} else {
NSString *cellIdentifier = @"identify_operator_chat";
UITableViewCell *cell = [self.tableMainChatting dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
UILabel *visitorMessage = (UILabel *)[cell viewWithTag:5032];
visitorMessage.text = item.Messagetext;
visitorMessage.layer.masksToBounds = YES;
visitorMessage.layer.cornerRadius = 5.0;
UILabel *messageTime = (UILabel *)[cell viewWithTag:5033];
messageTime.text = item.MessageTime;
return cell;
}
}
我想删除所有分隔线,还想根据其文本设置标签高度。您需要将UITableViewCell heightForRowAtIndexPath设置为UITableViewAutomaticDimension 使用以下方法:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewAutomaticDimension
}
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100; //Any default size of the cell
}
此外,您还必须为那些聊天室设置自动布局,这一点很重要。请按照中的自动布局说明进行操作。如果您的目标是iOS 8.0之前的设备,您可以使用此功能计算动态单元格高度
-(CGFloat)getLabelHeightFor:(NSString*)text font:(UIFont*)font width:(CGFloat)width {
UILabel *lbl = [[UILabel alloc] init];
lbl.frame = CGRectMake(0, 0, width, 0);
lbl.numberOfLines = 0;
lbl.font = font;
lbl.text = text;
[lbl sizeToFit];
return lbl.frame.size.height;
}
在你的控制器里
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
CGFloat height = [self getLabelHeightFor:MESSAGE font:YOUR_FONT width:LABEL_WIDTH];
return height;
}
使用这个方法(CGFloat)tableView:(UITableView*)表视图行高度索引路径:(NSIndexPath*)indexPath@SathyaBaman...I“我也面临着同样的问题……请更新工作示例代码……提前感谢HY tnx。”。但是在单元格标识符write
tableView.separatorStyle=UITableViewCellSeparatorStyleNone中仍然有一个行分隔符在viewdiload
或view中的code>将出现
。如果此答案对您有帮助,请批准或投票。