2010-09-11 2 views
1

Я пытаюсь установить размер UIImageView программно с помощью:задает размер UIImageView в ячейке UITableView программно - каково происхождение?

[thisImageView setFrame:CGRectMake(x, y, image.size.width, image.size.height)]; 

Я попытался с помощью х = 0, у = 0, но UIImageView исчезает.

Подробнее о том, почему я пытаюсь это сделать. Я пытаюсь отобразить изображение с высоким разрешением на iPhone 4 без использования SDK iOS 4 (только с использованием вызовов 3.2 SDK API). У меня есть звонки, чтобы узнать, есть ли у меня iPhone 4, поэтому я пытаюсь удвоить размер моего UIImageView, чтобы, когда я включил UIImage с высоким разрешением, он не будет зернистым.

+0

P.S. Увеличит ли размер моего UIImageView даже то, что я пытаюсь сделать? – Mark

ответ

2

Не уверен, что в iOS есть что-то особенное. Просто используйте тот же метод, который вы используете с 3.2: imageNamed: ... он будет заботиться обо всем, пока ваши изображения будут правильно названы (yourimagename.png и [email protected]). Здесь нет ничего интересного в iOS 4 SDK, просто укажите размер, который вы используете в точках, как и раньше.

Если это не подходит в вашем случае, можете ли вы объяснить, почему?

+0

Да Eiko. Проблема здесь в том, что я извлекаю изображение с веб-сервера, чтобы я мог динамически изменять изображение. Изображение, которое я отправляю, находится в разрешении, которое я хочу отобразить на iPhone 4 (например, мой UIImageView в IB составляет 100 на 100 пикселей, и я отправляю изображение размером 200 на 200 пикселей). Я попытался отправить изображение с суффиксом @ 2x, но это не помогло. Будет ли решение отправлять две версии изображения, хранить их локально и загружать? – Mark

+0

Хм ... «может быть». Загрузка изображения, сохранение его и использование imageNamed: должны работать (не используйте расширение @ 2x в этом методе, просто простое имя). Вы также можете установить масштабный коэффициент * изображения вручную. – Eiko

+0

Настройка масштаба вручную - это 4.0 SDK. :/ – Mark

1

Я думаю, что ваш подход неправильный. iPhone 4 работает с точками вместо пикселей, что делает удвоение размера затруднительным. 1 точка на старых устройствах равна 4 пикселям на iPhone 4, но по-прежнему используется как 1 балл.

Когда вы создаете фрейм, вы фактически не даете API размер пикселя, а размеры точки.

+0

Так нет ли способа сделать это без использования SDK 4.0? – Mark

+0

За исключением «точки» iPhone намного меньше стандартной (PostScript) точки 1/72 дюйма. Хотя Apple может назвать это «точкой», это * ужасное имя. –

2

Я пытаюсь отобразить с высоким разрешением изображения на iPhone 4 без использования IOS 4 SDK (только с помощью 3.2 SDK API вызовов)

Ой. Не делай этого.

Скомпилировать с 4.0, установить цель развертывания на 3. безотносительно.

При создании изображения отметьте [UIImage respondsToSelector:@selector(imageWithCGImage:scale:orientation:)]. Если это так, вы можете использовать +[UIImage imageWithCGImage:scale:orientation:] для создания изображения «масштаба 2», которое будет отображаться правильно в UIImageView на iPhone 4 (у которого есть экран «шкала 2»).

Если вы действительно не можете использовать OS 4 SDK (кажется, вы не указали причину, почему), то уменьшите UIImageView с помощью соответствующего режима содержимого (AspectFit/AspectFill/ScaleToFill) и установите его рамку до половины размера в пикселях (например, если изображение составляет 100x100 пикселей, установите его (CGSize) {50,50}). Это уменьшает изображение до полуразмера, но экран с двойным разрешением означает, что вы видите пиксель для пикселя.

+0

Если я использую SDK 4.0, он позволяет использовать фоновый рисунок, который нарушает некоторые функции в моем приложении. Поэтому сейчас я должен создать и использовать SDK 3.2. Можете ли вы дать мне пример вашего метода для того, чтобы не использовать SDK OS 4? Благодаря! – Mark

+0

Если фоновая настройка приложения - это единственное, чего вы не хотите в 4.0, просто установите ' UIApplicationExitsOnSuspend' in Info.plist. –

+0

Спасибо tc - это выглядит интересно. Было бы хорошо, если бы вы отредактировали свой пост и покажете мне пример своего решения № 4.0 для SDK? Я делаю все, что вы указываете, если я работаю на iPhone 4? Какой UIImageView я могу изменить? Один в IB или программно, когда я проверяю, работает ли я на iPhone 4? – Mark

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