Rozdzielczość obrazu dla nowego iPhone'a 6 i 6+, dodano obsługę @ 3x?

141

Spojrzałem na kilka artykułów i dyskusji, takich jak tutaj i tutaj, o rozdzielczościach obrazów, w których nowe iPhone'y będą używać obrazów @ 3x do wyświetlania. Czy to prawda?

Czy to oznacza, że ​​będziemy musieli zachować trzy obrazy? Powiedzmy na przykład, że mam obraz 50 x 50, czy będę musiał zachować 3 obrazy, aby zoptymalizować wygląd nowych iPhone'ów?

  • Normalny (50 x 50)
  • @ 2x - siatkówka (100 x 100)
  • @ 3x - Retina HD (150 x 150)

A może nowe telefony będą używać tylko obrazów @ 2x i nie ma nic takiego jak @ 3x?

Przetestowałem, wykonując przykładowy projekt i wszystkie symulatory wydają się używać obrazów @ 3x, jest to mylące.

Edytować

Oto więcej informacji

  • 3GS (163 ppi, więc użyj Normalny)
  • 4, 4s, 5 i 5s (326 ppi, więc używamy @ 2x)
  • 6 (326 ppi, więc wygląda na to, że będzie używać @ 2x)
  • 6 plus (401 ppi tutaj leży zamieszanie)

Edytować

Na podstawie odpowiedzi udzielonych przez Tsob i nitin, dodałem obrazy @ 3x do mojego projektu.

Edycja informacyjna

Widzę, że niewielu użytkowników jest zdezorientowanych, dlaczego iPhone 6 używa obrazów @ 2x, mimo że ma wyższą rozdzielczość, powodem jest

iPhone 6 może mieć inną rozdzielczość, ale ma taką samą gęstość na cal piksela (PPI)

  • Rozdzielczość dotyczy bezwzględnej liczby pikseli.
  • Gęstość (czyli piksele na cal - PPI) dotyczy względnej liczby pikseli na cal, która jest taka sama w przypadku iPhone'a 6 i poprzednich iPhone'ów, ale inna w przypadku iPhone'a 6 plus.

Sprawdź więcej na ten temat w tym wątku

W związku z tym iPhone 6 używa obrazu @ 2x tak samo jak iPhone'y 4, 5 i 5S, ponieważ ma ten sam PPI, a iPhone 6 plus używa @ 3x.

Bhumit Mehta
źródło
W takim razie jaki pożytek z Retina 4 2x, jeśli żadne urządzenie jej nie używa?
Mrunal,
1
Zgadzam się, że gęstość jest taka sama dla iPhone'ów 4, 5 i 6, ale jak rozwiązać inny problem z rozdzielczością? Więc to duża różnica 640x960 i 750x1334 pikseli. Jeśli muszę użyć obrazu tła, który nakłada się na cały ekran. Jak mogę ustawić xcassets obrazu w tym przypadku?
Matrosov Alexander
@MatrosovAlexander, jak to rozwiązałeś?
Mário Carvalho
jak obejść użyłem iphone 6 zdjęcie @ 2x obrazu jak dobrze, ale nie jest to starnge że Xcode ma odpowiedni obraz dla niego
Matrosov Alexander
śledź „ stackoverflow.com/questions/48483934/…
Rishil Patel

Odpowiedzi:

54

Próbowałem w przykładowym projekcie użyć obrazów standardowych, @ 2x i @ 3x, a symulator iPhone'a 6+ używa obrazu @ 3x. Wydawałoby się więc, że do zrobienia są zdjęcia @ 3x (jeśli symulator faktycznie powiela zachowanie urządzenia). Ale dziwne jest to, że wszystkie urządzenia (symulatory) wydają się używać tego obrazu @ 3x, gdy znajduje się on w strukturze projektu, także iPhone 4S / iPhone 5.
Brak komunikacji ze strony Apple w sprawie potencjalnej struktury @ 3x, podczas gdy proszą programistów o opublikowanie ich aplikacji na iOS8, jest dość mylący, zwłaszcza gdy widzą te wyniki na symulatorze.

** Edycja w witrynie Apple **: to również znalazłem w sekcji „Co nowego w iOS 8” w przestrzeni programistów Apple:

Wsparcie dla nowej skali ekranu iPhone 6 Plus wykorzystuje nowy wyświetlacz Retina HD ze skalą ekranu 3.0. Aby zapewnić jak najlepsze wrażenia na tych urządzeniach, dołącz nową grafikę zaprojektowaną dla tej skali ekranu. W Xcode 6 katalogi zasobów mogą zawierać obrazy w rozmiarach 1x, 2x i 3x; po prostu dodaj nowe zasoby graficzne, a system iOS wybierze prawidłowe zasoby podczas pracy na telefonie iPhone 6 Plus. Zachowanie podczas ładowania obrazu w iOS również rozpoznaje sufiks @ 3x.

Wciąż nie rozumiem, dlaczego wszystkie urządzenia ładują @ 3x. Może dlatego, że używam zwykłych plików, a nie xcassets? Wkrótce spróbuję.

Edytuj po dalszych testach: Ok, wygląda na to, że iOS8 ma o tym rozmowę. Podczas testowania na symulatorze iPhone'a 5 iOS 7.1 używa on poprawnie obrazu @ 2x. Ale uruchamiając to samo na iOS 8, używa @ 3x na iPhonie 5. Nie jestem pewien, czy jest to pożądane zachowanie, czy błąd / błąd w iOS8 GM lub symulatorach w Xcode 6.

TSob
źródło
2
Tak, testowałem z symulatorem, wszystkie urządzenia robią zdjęcia @ 3x, rzeczywiście mylące
Bhumit Mehta
Podsumowując, na dzień dzisiejszy najlepszą możliwą ścieżką byłoby użycie „@ 2x” w nazwach obrazów, ale w jakiś sposób sprawdzenie urządzeń dla 6 Plus i użycie obrazu 3x BEZ „@ 3x”, aby nie zatruć urządzeń 2x?
darkheartfelt
Wygląda na to, że wybór 3x na iPhonie 6 ma miejsce tylko wtedy, gdy dany zasób to JPG zamiast PNG.
emreberge
102

AKTUALIZACJA:

Nowy link do rozmiaru obrazu ikon według Apple.

https://developer.apple.com/ios/human-interface-guidelines/graphics/image-size-and-resolution/

wprowadź opis obrazu tutaj


Tak, to prawda, Apple dostarcza oficjalną dokumentację dotyczącą rozmiaru ikony lub obrazu

wprowadź opis obrazu tutaj

musisz ustawić obrazy dla iPhone6 ​​i iPhone6 ​​+

W przypadku iPhone'a 6:

750 x 1334 (@2x) for portrait

1334 x 750 (@2x) for landscape

Dla iPhone 6 Plus:

1242 x 2208 (@3x) for portrait

2208 x 1242 (@3x) for landscape

Aby uzyskać więcej informacji na temat obrazów i ich rozdzielczości, ten post jest najlepiej pomocny

Aby ustawić rozmiar obrazów dla elementów sterujących, możesz ustawić 1x @ 2x i @ 3x w następujący sposób:

wprowadź opis obrazu tutaj

Nitin Gohel
źródło
8
jeśli wszystkie urządzenia są retina 2x lub 3x, dlaczego w katalogu zasobów pojawia się prośba o 1x obrazy w projektach do kierowania na iPhone'a tylko z iOS 7/8? Nie ma sensu.
Duck
1
może to być dla iphone4 @RubberDuck :) zobacz, że ipad 2 i iPad Mini potrzebują 1x
Nitin Gohel
przepraszam, ale nie czytałeś tego, co napisałem. Mowa o projekcie tylko dla iPhone'a dla iOS 7. Nie ma iPhone'a z 1x, na którym można by uruchomić iOS 7, ale katalog zasobów wciąż o to pyta.
Duck,
@RubberDuck Wybierz zasób obrazu, a następnie wyświetl panel narzędzi po prawej stronie Xcode. Jedna z zakładek ma zestaw pól wyboru. Być może Twoje zasoby mają zaznaczonych zbyt wiele pól wyboru, co powoduje, że 1x pojawia się jako opcja.
rmaddy
10

Przetestowałem, wykonując przykładowy projekt i wszystkie symulatory wydają się używać obrazów @ 3x, jest to mylące.

Utwórz różne wersje obrazu w katalogu zasobów, tak aby sam obraz wskazywał, jaka to wersja:

wprowadź opis obrazu tutaj

Teraz uruchom aplikację po kolei na każdym symulatorze. Zobaczysz, że obraz 3x jest używany tylko w telefonie iPhone 6 Plus.

To samo dotyczy sytuacji, gdy obrazy są rysowane z pakietu aplikacji przy użyciu ich nazw (np. One.png , [email protected] i [email protected] ) przez wywołanie imageNamed:i przypisanie do widoku obrazu.

(Istnieje jednak różnica, jeśli przypiszesz obraz do widoku obrazu w Interface Builder - wersja 2x jest ignorowana na urządzeniach o podwójnej rozdzielczości. Jest to prawdopodobnie błąd, najwyraźniej błąd w programie pathForResource:ofType:).

matowe
źródło
1
Oznaczyłeś zasób jako „uniwersalny”, dlatego widzisz konsekwentne zachowanie. Spróbuj zamiast tego wybrać „specyficzne dla urządzenia” w menu rozwijanym!
Nikolay Spassov
1
@RalphZhouYuan Teraz dla mnie działa dobrze. Nie zobaczysz na liście wersji 2x , ale po prostu przypisz wersję 1x, a wersja 2x lub 3x będzie poprawnie używana. Lub po prostu użyj katalogu zasobów.
mat
1
@RalphZhouYuan Oto mój przykład do pobrania: github.com/mattneub/Programming-iOS-Book-Examples/tree/master/… - wyświetla zarówno pliki obrazów w pakiecie aplikacji, jak i pliki obrazów w katalogu zasobów i wszystkie działają poprawnie.
mat.
3
@matt Wreszcie stwierdziłem, że mój problem jest związany z ustawieniami celu wdrożenia (czyli 6.0) mojej aplikacji. Otworzyłem pytanie: stackoverflow.com/questions/26333278/ ... i wysłałem raport o błędzie do Apple.
inexcii
1
@RalphZhouYuan Wow, świetna praca detektywa śledząca to! Dzięki za zgłoszenie.
mat.
2

ios zawsze będzie próbował zrobić najlepszy obraz, ale wróci do innych opcji ... więc jeśli masz tylko normalne obrazy w aplikacji i potrzebuje @ 2x obrazów, użyje normalnych obrazów.

jeśli umieścisz tylko @ 2x w projekcie i otworzysz aplikację na normalnym urządzeniu, przeskaluje obrazy w dół do wyświetlenia.

Jeśli kierujesz reklamy na urządzenia ios7 i ios8 i chcesz uzyskać najlepszą jakość, potrzebujesz @ 2x i @ 3x dla telefonów i normalnych oraz @ 2x dla iPadów, ponieważ nie ma już telefonu innego niż Retina i nie ma @ 3x iPada.

może lepiej jest tworzyć zasoby w aplikacji z grafiki wektorowej ... sprawdź http://mattgemmell.com/using-pdf-images-in-ios-apps/

Bastian
źródło
po prostu użyj niesamowitego kodu PaintCode do wektorów w aplikacjach
Fattie