gpt4 book ai didi

ios - 在 Objective-c 中聊天 UI 设计

转载 作者:行者123 更新时间:2023-11-29 00:31:49 25 4
gpt4 key购买 nike

我正在使用 Objective-c 在 IOS 中开发一个聊天应用程序。功能方面一切正常,但我在设计上遇到了一些困难。

这是我的输出 enter image description here

我创建了两个单元格标识符来区分 TableView 中的消息类型。像这样

enter image description here

然后我在 cellForRowAtIndexPath 中修改它。像这样

- (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
}

此外,您还必须为那些聊天 UILabel 设置 AutoLayout,这很重要。请遵循 here 中的自动布局说明.

关于ios - 在 Objective-c 中聊天 UI 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com