Как изменить размер изображения, чтобы соответствовать ячейке 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]
выше будет добавить изображение в ячейку и я могу рассчитать размер, чтобы соответствовать его,:
- я не уверен, что есть лучше
разве это не слишком накладно?
добавить
UIImageView
просто размерcell.image
? - теперь мой лейбл (
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 минут.