2013-09-06 4 views
12

Я делаю образы для своего UITabBar. Я делаю их размером 60x60, потому что это то, что используют экраны сетчатки. Однако, когда я использую этот размер, он отображается слишком большим в баре, поэтому вы можете видеть только часть изображения. Когда я уменьшаю его до 30x30, он работает, но этот размер предназначен для не-сетчатых дисплеев. Почему он не отображается правильно, когда я использую 60x60?UITabBarItem Размер изображения

+5

Убедитесь, что ваш 60x60 сетчатка изображения называется с '@ 2x' суффикса имя файла. – rmaddy

+0

Спасибо, это сработало! – user2397282

+0

Возможный дубликат [Значки Tabbar iOS7 слишком большие] (http://stackoverflow.com/questions/22166644/ios7-tabbar-icons-too-big) –

ответ

6

Вы получали это поведение, потому что вы поставляли изображение с высоким разрешением, когда iOS искала изображение стандартного разрешения.

iOS автоматически выбирает для вас соответствующий размер изображения, в зависимости от разрешения устройства доступа. Таким образом, вы будете нести ответственность за предоставление изображения «стандартного разрешения», для устройств без сетчатки и изображения «высокого разрешения» для дисплеев сетчатки. То, как вы делаете это в прошивке, чтобы добавить «@ 2x» до конца вашего файла, но перед расширением файла, как это:

my-image.png  // for non-retina displays (Ex: 30x30 dpi) 
[email protected] // for retina displays (Ex: 60x60 dpi) 
[email protected] // for retina displays(plus editions) (Ex: 90x90 dpi) 

Затем, когда вы ссылаетесь файлы в XCode проекте, вы нужно только указать имя файла стандартного разрешения (например, «my-image.png»), и если у устройства доступа есть экран сетчатки, то XCode автоматически выберет файл с суффиксом «@ 2x» для вас. Это очень удобно, потому что это избавляет нас от необходимости определять, имеет ли устройство дисплей сетчатки и какое изображение мы должны предоставить.

Вот пример кода:

// Select an image named "my-image.png" 
UIImage *img = [UIImage imageNamed:@"my-image.png"]; 

// If the device this code is run on is a retina device, 
// then Xcode will automatically search for "[email protected]" and "[email protected]" 
// otherwise, it will use "my-image.png" 

Вы можете прочитать на эту тему с помощью сайта яблока разработчика: Optimizing for High Resolution

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