我的聊天系统看起来有点奇怪,无法获得细胞的动态高度

时间:2013-05-08 18:01:07

标签: ios height messagebox tableviewcell

我的应用程序中有一个聊天系统,我试图让动态单元格根据单元格中的文本数量来设置动态高度,这是人们尝试做的很常见的事情,但是我不能让我的工作正常

此外,邮件对齐右侧,发件人应该在左侧,收件人应该在右侧...继续讲述我对故事板所做的事情。

创建了一个带有2 dynamic prototypes的TableView,在UIViewController里面,这里是viewController ...每个单元格都有一个标签,一个左边一个右边,整个左右边的东西都工作......继承人我的问题。它只向所有人伸出正轨,所以基本上我的if没有发生,我的else正在推翻。继承人SS。

所以我有两个问题......文字不会有多行...以及不会做动态高度,也...如果有人可以指出我正确的方向让发送者和接收者在不同的方面显示。

enter image description here

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *myWords = [[getMessage objectAtIndex:indexPath.row] componentsSeparatedByString:@":oyr4:"];
    if (myWords[1] == [MyClass str]){
        static NSString *sender = @"sender";
        UITableViewCell* cellSender = [_tableView dequeueReusableCellWithIdentifier:sender];
        messageContentTo = (UILabel *)[cellSender viewWithTag:83];
        self->messageContentTo.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8];
        self->messageContentTo.lineBreakMode = NSLineBreakByWordWrapping;
        [self->messageContentTo sizeToFit];
        messageContentTo.text = myWords[4];
        return cellSender;
    } else {

        static NSString *reciever = @"reciever";

        UITableViewCell* cellReciever = [_tableView dequeueReusableCellWithIdentifier:reciever];
        messageContentFrom = (UILabel *)[cellReciever viewWithTag:84];
        messageContentFrom.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8];
        messageContentFrom.lineBreakMode = NSLineBreakByWordWrapping;
        messageContentFrom.font = [UIFont systemFontOfSize:22];
        messageContentFrom.numberOfLines = 0;
        messageContentFrom.text = myWords[4];

        return cellReciever;
    }

}
#pragma mark - UITableViewDelegate methods
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CGSize size = [[getMessage objectAtIndex:indexPath.row]
                   sizeWithFont:[UIFont systemFontOfSize:22]
                   constrainedToSize:CGSizeMake(1000, CGFLOAT_MAX)];
    return size.height + 15;
}

1 个答案:

答案 0 :(得分:2)

左右问题可能是由于:

if (myWords[1] == [MyClass str])

如果myWords [1]是一个字符串,你需要使用isEqualToString:not“==”来比较它。

if ([myWords[1] isEqualToString:[MyClass str]])

就标签高度调整不当而言,如果不知道标签的设置方式,很难说明发生了什么。我通常通过在标签和IB中的单元格的顶部和底部之间进行约束来实现。这样,当您更改单元格的高度时,标签将跟随(当然,将numberOfLines设置为0)。另外,在sizeWithFont:constrainedToSize:方法中,传递给CGSizeMake()的宽度应该是标签的宽度,而不是1000.