В настоящее время я пытаюсь показать простую таблицу в своем приложении iPhone, где я использую UITableViewCell со стилем UITableViewCellStyleValue1 (изображение слева, метка детализации справа выровнена). Все ячейки имеют высоту по умолчанию (50.0f). Прежде чем добавить изображение в ячейку, я изменяю размер изображения до 40x40, чтобы оно не было общей высотой ячейки (я думаю, это выглядит некрасиво).
Я делаю это с помощью этого кода:
cell.imageView.image = [UIImage imageNamed:@"icon.png"];
cell.imageView.image = [RootViewController imageWithImage:cell.imageView.image scaledToSize:CGSizeMake(40, 40)];
Это все очень хорошо и работает без нареканий. Но я хочу сделать это также на iPhone 4 (с экраном с более высоким разрешением). Проблема в том, что на iPhone 4 все без проблем масштабируется, но изображения выглядят очень точечно.
Причина этого, конечно, в том, что все на экране раздуто до нового разрешения, в том числе и изображения, поэтому изображения, вероятно, должны быть примерно 80х80. Но когда я изменяю их размеры до 80x80 (оригиналы имеют размер 120x120), они кажутся слишком большими из-за масштабирования.
Есть ли способ на самом деле сделать мои изображения не полной высоты табличного элемента, но я хочу, чтобы они были в более высоком разрешении на iPhone 4. Должен ли я создать для этого совершенно новый вид?
Упс, после первого ответа я понял, что моя собственная письменная функция отсутствует:
+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContextWithOptions(newSize, NO, [[UIScreen mainScreen] scale]);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Как видите, после первого ответа я попытался заставить это работать с методом UIGraphicsBeginImageContextWithOptions , но каким-то образом это приводит к пустому изображению.