2015-02-02 1 views
0

Я создал собственный прототип ячейки внутри раскадровки, не используя автозапуск, и я столкнулся с довольно неприятной проблемой, когда UIImageView у меня внутри ячейки, кажется, подчиняется ограничениям всех собственный, когда я хочу, чтобы он отражал размер ячейки с небольшим отступом.UIImageView auto resize внутри пользовательского UITableViewCell с разной высотой

Вот настройки в раскадровке Interface Builder и режим просмотра установлен на «масштаб, чтобы заполнить»

Setup

И вот что я вернусь, без редактирования размещения или масштабирование изображение, похоже, очень похоже на использование аспект заполнения.

Result

Я пробовал различные варианты, и никто не похоже на работу для меня до сих пор, только другой способ я могу думать, поворот автоматического изменения размера и установить Rect себя вручную, когда ячейка создается какие-либо идеи?

и мой код для установки ячейки

- (void)setCell:(NSDictionary*)messageData 
{ 
    [_nameLabel setText:messageData[@"name"]]; 
    [_messageLabel setText:messageData[@"message"]]; 

    [_nameLabel sizeToFit]; 
    [_messageLabel sizeToFit]; 

    UIImage *image; 
    if([messageData[@"direction"] boolValue]) 
    { 
     image= [[UIImage imageNamed:@"bubble_left"]resizableImageWithCapInsets:UIEdgeInsetsMake(18, 6, 6, 10) resizingMode:UIImageResizingModeStretch]; 
    } 
    else 
    { 
     image= [[UIImage imageNamed:@"bubble_right"]resizableImageWithCapInsets:UIEdgeInsetsMake(18, 10, 6, 6) resizingMode:UIImageResizingModeStretch]; 
    } 

    [_bubbleImage setImage:image]; 
} 

и методы протокола

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CUIChatCellTableViewCell *cell = [_chatTableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath]; 

    NSDictionary *messageData = _testDataArray[indexPath.row]; 

    [cell setCell:messageData]; 

    return cell; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    _customCell = [_chatTableView dequeueReusableCellWithIdentifier:@"CustomCell"]; 

    //configure cell 
    NSDictionary *messageData = _testDataArray[indexPath.row]; 

    [_customCell setCell:messageData]; 

    //Get height of the cell 
    CGFloat height = [_customCell.messageLabel frame].size.height+[_customCell.nameLabel frame].size.height+20; 

    return height; 
} 

ответ

0

Я не мог заставить автоматическое изменение работать и я попробовал другой тестовый проект с нуля, и это, казалось, работать, поэтому он должен быть некоторые настройки, так или иначе я закончил тем, что установить высоту вручную каждая ячейка на основе ее содержания в любом случае здесь является кодом для этого

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    _customCell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"]; 

    //configure cell 
    CMessageInfo *messageData = _testDataArray[indexPath.row]; 

    [_customCell setCell:messageData]; 

    //Get height of the cell 
    CGFloat height = [_customCell.messageLabel frame].size.height+[_customCell.nameLabel frame].size.height+20; 

    return height; 
} 
1

Установка свойств автоматического изменения, как это, возможно, вы получите помощь от этого.

Autoresizing