2010-08-20 3 views
4

Текущий я пытаюсь показать простую таблицу в приложении для iPhone, где я использую UITableViewCell со стилем UITableViewCellStyleValue1 (изображение слева, метка детали справа). Все ячейки имеют высоту по умолчанию (50.0f). Прежде чем добавить изображение в ячейку, я изменил размер изображения на 40x40, так что это не общая высота ячейки (я думаю, что выглядит некрасиво).Изменение размера изображения в UITableViewCell не должно быть общей высоты

Я делаю это с этим кодом:

cell.imageView.image = [UIImage imageNamed:@"icon.png"]; 
cell.imageView.image = [RootViewController imageWithImage:cell.imageView.image scaledToSize:CGSizeMake(40, 40)]; 

Это все очень хорошо и работает безупречно. Но я хочу это сделать и на iPhone 4 (с экраном с более высоким разрешением). Проблема в том, что все без проблем масштабируется на iPhone 4, но изображения кажутся очень пиксельными.

Причина этого заключается в том, что все на экране взорвано до масштаба до нового разрешения, а также изображения, поэтому изображения, вероятно, должны быть чем-то вроде 80x80. Но когда я изменяю их размер до 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 но как-то это приводит к пустому изображению.

ответ

5

Предполагаю, вы написали «imageWithImage: scaledToSize:», правильно?

Я также предполагаю, что в этом вызове вы используете «UIGraphicsBeginImageContext (yourSize)». Замените это на «UIGraphicsBeginImageContextWithOptions (yourSize, NO, 2.0)», если ваша платформа - iPhone 4.

«2.0» определяет масштабный коэффициент для точек (вы определяете размер в точках, не в пикселях). На дисплее перед сеткой точка равна 1x1 пикселю. На дисплее сетчатки точка равна 2x2 пикселям.

Редактировать: Убедитесь, что у вас есть версия с высоким разрешением «icon.png» в ваших ресурсах, называемая «[email protected]». Это автоматически загружается, если это экран сетчатки.

+0

Спасибо, это действительно хороший момент. Я добавила свой метод к первому вопросу. Как-то это приводит к пустому изображению. –

+0

Ow, НУЖНО значок @ 2x? Или он может работать без него. Мои изображения все извлекаются из Интернета, и я должен их вручную переименовать, а затем, когда приложение работает на iPhone 4. –

+0

Хорошо, белое изображение было моим собственным движением тупица. Спасибо за информацию! –

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