Как изменить размер изображения, чтобы соответствовать ячейке UITableView?

как подогнать UIImage в ячейке UITableView, UITableViewCell (?).

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

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

я думаю, что код выглядит так (с моей макушки):

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. я не уверен, что есть лучше разве это не слишком накладно? добавить 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

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

редактировать: 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];
}

2 ответов


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


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

название видео: "эффективная разработка приложений для iPhone-Часть 2" около 30 минут.