Как изменить размер изображения, чтобы оно соответствовало ячейке UITableView? - PullRequest
6 голосов
/ 19 мая 2009

Как вписать UIImage в ячейку UITableView, UITableViewCell (?).

У вас 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. Я не уверен, что есть лучше Кстати, не слишком ли много накладных расходов, чтобы добавьте 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 ]

2 голосов
/ 19 мая 2009

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

1 голос
/ 06 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...