2014-09-21 6 views
31

Я пытаюсь обновить свое приложение для новых устройств 6 и 6+.Каталог каталога конкретных устройств Xcode 6

Я добавил изображения запуска для новых размеров iPhone (6 и 6+). В каталоге активов есть записи для 6 и 6+. Нет проблем.

У меня также есть полноэкранные изображения наложения, которые мне нужно добавить. У меня уже есть изображения для них в @ 2x (iPhone 4s) и R4 (iPhone 5 5s 5c). Я создал изображения с новыми разрешениями, но я не уверен, как их добавить в набор изображений.

Когда я захожу в каталог активов, я могу выбрать конкретное устройство в наборе изображений, и я вижу записи для iPhone, сетчатки-4 и iPad. Есть лунки для перетаскивания для 1x, 2x, Retina 4 2x и 3x.

Мой вопрос - где я должен положить изображение для iPhone 6? Очевидно, что 3x для 6 плюс. Я не понимаю, как использовать сетчатку-4 для iPhone 5 и iPhone 6, потому что размеры экрана различны.

Что мне не хватает?

+0

Возможно, вы можете расширить тему для Xcode 6 и выше? (см. мой ответ, чтобы узнать, почему я предлагаю) –

ответ

5

Я нашел это полезным: http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

Кажется, что iPhone 6 будет использовать @ 2x передискретизируется (iPhone 5) изображение. Кроме того, свойства набора изображений (панель утилит) позволяют переключаться между ячейками «Universal» (x1, x2, x3) и «Device-specific».

+2

Да, это полезное объяснение того, как 6+ весы. Однако я считаю, что это не отвечает на мой вопрос. После экспериментов я обнаружил, что в Xcode 6.0.1 изображения iPhone 6 должны попасть в колоду \ @ 2x. Я думаю, что это ошибка, потому что теперь нет места для размещения изображений \ @ 2x, предназначенных для iPhone 4 (которые по-прежнему поддерживаются в iOS8) Кроме того, на изображении нет места для размещения изображений для отображать режимы масштабирования iPhone 6 и 6+. –

+0

Я создаю универсальное приложение, и мои изображения iPhone 5/5s и iPhone 6 берутся из Retina 4 2x (320x568 точек) в соответствии с объяснением в ссылке. Это отдельно от 2x хорошо используется для iPhone 4s. Изображения iPhone 6 добираются до 750x1334 пикселей перед визуализацией. –

+2

@ KurtSchwartz, я стою исправлено. Я дважды проверил после публикации моего комментария, а iPhone 6 действительно использует изображение 2x, предназначенное для iPhone 4s, а не одно из сетчатки 4 2x хорошо. Ссылка PaintCode кажется неправильной, и это похоже на незначительную ошибку. Однако это не имеет особого значения - в любом случае изображение разделяется между iPhone 6 (масштабированным) и другой моделью. –

6

Я уверен, что это ошибка в Xcode 6. Когда вы загружаете изображение из набора изображений каталога активов, вы всегда будете получать запись 3x для iPhone 6+, независимо от того, увеличен ли масштаб или стандартный режим отображения , Для iPhone 6 вы всегда будете получать 2x в обоих режимах. Для iPhone 4s вы также получите запись 2x.

Все эти устройства имеют различное масштабирование и пропорции, поэтому это неприемлемо для пиксельных точных изображений. Мои изображения полностью полноэкранные и предназначены для наложения, поэтому я видел неправильное размещение в режиме масштабирования.

Я работал вокруг этой проблемы путем создания двух наборов изображений:
1) iPhone 6/6plus в стандартном режиме
1242x2208 изображения в записи 3x
750x1334 в записи 2x

2) iPhone 6/6Plus в увеличенном режиме или iPhone 5
1125x2001 для входа 3x
640x1136 для записи 2x
640x1136 для R 4-2x entry

Для выполнения этой работы мне необходимо определить, является ли устройство одним из новых, и если они находятся в увеличенном режиме. Основываясь на этой информации, я загружаю изображение из правильного набора изображений.

Это код, я использую, чтобы определить, является ли устройство один из новых в увеличенному/стандартном режиме:

UIScreen *screen = [UIScreen mainScreen]; 
if (screen.scale == 3 && screen.currentMode.size.width == 1242 || 
    screen.scale == 2 && screen.currentMode.size.width == 750) { 
    self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"StdImageSet"]]; 
} else { 
    self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ZoomedImageSet"]]; 
} 

Это некрасиво, и я ненавижу того, чтобы сделать это, так как наборы изображений являются Предполагается, что этот код не будет устранен. Я не видел лучшего способа обойти это, и я подал радар (радар 18463463).

+1

Спасибо за это. Я вытягивал свои волосы, пытаясь понять, почему 6+ загружает полноразмерные изображения в режиме масштабирования. – Malakim

+0

Благодарим вас за это. Это очень расстраивает. Меня беспокоит, что Xcode теперь обновлен для iWatch, но нет никаких признаков исправления этой ошибки. Это должно быть ошибка, правильно ...? Я сообщаю об этом как об одном. Надеюсь, они это исправит. – pingin

1

Просто нашли новое решение для этой проблемы.Используйте изображение сетчатки 4 для 2x и установите модель содержимого полноэкранного изображения для масштабирования аспектного заполнения, чтобы он работал как на iPhone 4, так и на iPhone 6.

+4

Это нехорошее решение, потому что оно будет обрезать изображение. – Ali

5

Это действительно раздражает. Для настройки, характерной для устройства, мы все ожидаем меню, например, в LaunchImage Set, разные заполнители для разных размеров экрана.

5

я помещаю здесь некоторые из моих наблюдений, которые я сделал для iPhone устройств (может быть, кто-то найдет это полезным):

  1. iPhone 4S - 2x Any/Any плитка
  2. iPhone 5 - 2x 1GB/Any плитки
  3. iPhone 5S - 2x 1GB/Any плитка
  4. iPhone 6 - 2x 1GB/Any плитка
  5. iPhone 6 Plus - 3x 1GB/Any плитка

Для этого я проверил Устройства - iPhone, память 1 ГБ. Как вы можете видеть, нет разницы между графикой между iPhone 5/5S/6. Может быть, играть с настройками для Metal 1v2/2v2 можно отличить, но мне кажется, что это слишком сумасшедший. Knowledge reference starts at 10:50

Что я получил от WWDC прямо сейчас, мы должны думать не о разрешении/настройке устройства/устройства, а сосредоточиться на классах размера (которые одинаковы для iPhone, кроме 6 Plus), но если кто-то по каким-то причинам, нуждаются в этой графике, специфичной для устройства, и хотите использовать каталоги активов (что здорово), то здесь вы получаете то, что я нашел на данный момент (Xcode 7).

+3

Согласитесь с вами, совершенно странно, что нет возможности отличить iPhone 5/5S/6 – hash3r