UITabBarItem размер изображения на дисплее retina

#iphone #uiimage #uitabbaritem #retina-display

#iPhone #uiimage #uitabbaritem #сетчатка-дисплей

Вопрос:

У меня есть приложение TabBarController, которое получает все изображения из Интернета, включая значки для TabBarController. Я хочу, чтобы изображения выглядели хорошо, когда на устройстве установлен дисплей retina.

Это то, что я делаю:

  1. Уменьшение размера изображений в зависимости от масштаба экрана.
  2. Настройка масштаба содержимого для просмотра: ImageView.contentsScale = [Главный экран UIScreen].scale;

Он отлично работает для стандартных изображений с UIImageView, однако я не могу понять, как это сделать для UITabBarItems, поскольку у меня нет доступа ни к фрейму, ни к contentScale.

Есть идеи?

Спасибо!

Ответ №1:

При создании UIImage вы можете установить масштаб изображения равным 2.0 для ресурсов изображения размером retina. Вот пример того, как я это сделал:

 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
UIImage *image = [UIImage imageWithData:data];
CGImageRef cgimage = image.CGImage;
image = [UIImage imageWithCGImage:cgimage scale:2.0 orientation:UIImageOrientationUp];
  

Теперь вы можете использовать это изображение в своем UITabBarItem.

Ответ №2:

Вы можете создать две версии изображения и назвать их image.png для размера 30 пикселей и image@2x.png для 60 пикселей. Затем используйте это:

 UIImage *image = [UIImage imageNamed:@"image.png"];
  

Изображение с правильным разрешением будет загружено в зависимости от дисплея на устройстве.

Ответ №3:

как насчет определения того, является ли устройство retina или нет, и соответствующей загрузки различных ресурсов?

Комментарии:

1. Спасибо за ваш ответ, но проблема в том, что если я установлю изображение с высоким разрешением (60 пикселей вместо 30 пикселей) в качестве изображения для tabBarIcon, оно будет нарисовано слишком большим. Я чего-то не понимаю и не знаю чего..