2014-02-11 2 views
0

Я создал UITableViewCell с UITextView внутри. Я использую Json для получения моего содержимого HTML для Textview. Я также использую DTCoreText. Вот часть моего cellForRowAtIndexPath:Содержимое ячейки (только текст) Обновление после касания ячейки

static NSString *CellIdentifier1 = @"NewsCell"; 

GTNewsCustomCell *newsCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 

if(newsCell == nil){ 

    NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"GTNewsCustomCell" 
                 owner:self//transfer ownership to self 
                options:nil]; 
    newsCell = [nibViews objectAtIndex:0]; 
} 

newsCell.cellFrame = CGRectMake(10, 0, 300,40); 

newsCell.titleLabel.text = [[self.newsList objectAtIndex:indexPath.section]objectForKey:@"title"]; 

newsCell.messageTextView.textColor = [UIColor blackColor]; 
newsCell.messageTextView.backgroundColor = GTDefaultTextBackgroundColor; 
newsCell.messageTextView.editable = NO; 
newsCell.messageTextView.userInteractionEnabled = NO; 

newsCell.messageTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

NSString *htmlTag = @"<b></b>"; 
NSString *html = [NSString stringWithFormat:@"%@%@",htmlTag,[[self.newsList objectAtIndex:indexPath.section]objectForKey:@"previewMessage"]]; 


. 
. 
. 

return newsCell; 

Проблема заключается в том, что содержание моего TextView иногда больше, чем размер TextView. Странная вещь, когда я прикасаюсь к текстуру, она обновляется, и все показываются правильно ... что может быть неправильным?

Вот некоторые скриншоты:

Разбитое TextView: enter image description here

Когда я коснуться ячейки, текст отформатирован: enter image description here

EDIT: Ok нет я нашел мой Проблема, но я не знаю, как ее решить. В моей пользовательской сотовый .m файл у меня есть способ для изменения ширины размера ячейки:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    CGRect cellRect = self.bounds; 
    cellRect.size.width = self.cellFrame.size.width; 

    self.bounds = cellRect; 
} 

Если я удалить это все работает нормально, но, конечно, моя клетка не правильный размер больше ... но мне нужно некоторое пространство слева и справа между TableView и Cell!

+0

Можете ли вы уменьшить проблему, как, например, найти минимальный код, чтобы воспроизвести проблему? –

+1

Надеюсь, его лучше знают :) – Davis

ответ

0

Ok, наконец, я решил эту проблему: я удалить «layoutSubviews» Способ и вставки:

- (void)setFrame:(CGRect)frame { 
    frame.origin.x += 10; 
    frame.size.width -= 2 * 10; 
    [super setFrame:frame]; 
} 

Теперь мой текст всегда правильный размер и мой сотовый есть также правильный размер!

0

Я всегда думаю, что лучше не пытаться вмешиваться в рамки UITableViewCell. Кадр каждой ячейки устанавливается UITableView с шириной, равной ширине представления таблицы, а высота равна либо значению, возвращаемому делегатом делегата таблицы tableView:heightForRowAtIndexPath:, либо, если это не реализовано, свойство rowHeight вида таблицы.

Если содержимое вашего пользовательского ячейки, то есть подвиды, не там, где вы хотите их, то положение и размер эти в вашей пользовательской реализации layoutSubviews (или в вашем СИБ). Здесь может быть опция автоматического макета. В вашем примере вы выложите ячейку messageTextView.

Смежные вопросы