#iphone #uiimage #uitabbaritem #retina-display
#iPhone #uiimage #uitabbaritem #сетчатка-дисплей
Вопрос:
У меня есть приложение TabBarController, которое получает все изображения из Интернета, включая значки для TabBarController. Я хочу, чтобы изображения выглядели хорошо, когда на устройстве установлен дисплей retina.
Это то, что я делаю:
- Уменьшение размера изображений в зависимости от масштаба экрана.
- Настройка масштаба содержимого для просмотра: 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, оно будет нарисовано слишком большим. Я чего-то не понимаю и не знаю чего..