Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Objective-c中聊天界面的设计_Ios_Objective C - Fatal编程技术网

Ios Objective-c中聊天界面的设计

Ios Objective-c中聊天界面的设计,ios,objective-c,Ios,Objective C,我正在使用Objective-c在IOS中开发聊天应用程序。功能方面的每一个都可以,但我在设计上有一些困难 这是我的输出 我创建了两个单元格标识符来区分表视图中的消息类型 然后我在cellForRowAtIndexPath中修改它。像这样 - (void)viewDidLoad { [super viewDidLoad]; self.tableMainChatting.delegate = self; self.tableMainChatting.dataSource

我正在使用Objective-c在IOS中开发聊天应用程序。功能方面的每一个都可以,但我在设计上有一些困难

这是我的输出

我创建了两个单元格标识符来区分表视图中的消息类型

然后我在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
}

此外,您还必须为那些聊天室设置自动布局,这一点很重要。请按照中的自动布局说明进行操作。

如果您的目标是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>将出现
。如果此答案对您有帮助,请批准或投票。