2009-05-18 2 views
6

Как установить UIImage в ячейку UITableView, UITableViewCell (?).Как изменить размер изображения в соответствии с ячейкой UITableView?

ли вам addSubview в cell или есть способ изменить размер cell.image или UIImage, прежде чем он назначен cell.image?

Я хочу сохранить размер ячейки по умолчанию (независимо от того, когда вы начинаете с нулевого прямоугольника) и хотел бы добавить иконки, подобные изображениям для каждой записи. Изображения немного больше размера ячейки (размер строки таблицы).

Я думаю, что код выглядит следующим образом (от верхней части моей головы):

UIImage * image = [[UIImage alloc] imageWithName:@"bart.jpg"]; 
cell = ... dequeue cell in UITableView data source (UITableViewController ...) 
cell.text = @"bart"; 
cell.image = image; 

Что мне нужно сделать, чтобы изменить размер изображения в соответствии с размером ячейки? я видел что-то вроде:

UIImageView * iview = [[UIImageView alloc] initWithImage:image]; 
iview.frame = CGRectMake(...); // or something similar 
[cell.contentView addSubview:iview] 

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

  1. Я не уверен, если есть лучше way, is it it too much overhead to добавить UIImageView чтобы изменить размер cell.image?
  2. Теперь мой лейбл (cell.text) должен быть перемещен, как это видно из-за изображения, я видел решение, в котором вы просто добавить текст в качестве метки:

Пример:

UILabel * text = [[UILable alloc] init]; 
text.text = @"bart"; 
[cell.contentView addSubview:iview]; 
[cell.contentView addSubview:label]; 
// not sure if this will position the text next to the label 
// edited original example had [cell addSubview:label], maybe that's the problem 

Может ли кто-нибудь указать мне правильное направление?

EDIT: Doh [cell.contentview addSubview:view] не [cell addSubview:view] может быть, я должен смотреть на это:

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ...; 
    CGRect frame = cell.contentView.bounds; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    myLabel.text = ...; 
    [cell.contentView addSubview:myLabel]; 
    [myLabel release]; 
} 
+0

Нет других предложений? – stefanB

ответ

2

This site posts code на масштабировании в UIImage*. Вы можете играть с масштабированием, чтобы получить правильное соотношение для используемого вами UIImage*, чтобы уменьшить масштаб.

+0

Интересно, я посмотрю, спасибо за ссылку – stefanB

1

Если у вас есть доступ к центру Apple devloper, есть видео о масштабировании изображений для просмотра таблиц. Он более сфокусирован на проблемах производительности и говорит много о потоковом, но он показывает пример кода, используемый для изменения размеров изображений.

Название видео: «Эффективная разработка приложений для iPhone - часть 2» около 30 минут.

+0

спасибо, я проверю это – stefanB

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