Jak tworzyć lub migrować aplikacje na iPhone 5 Rozdzielczość ekranu?

[[0]} nowy wyświetlacz iPhone 5 ma nowy współczynnik proporcji i nową rozdzielczość (640 x 1136 pikseli).

Co jest wymagane do opracowania nowych lub przejścia istniejących aplikacji na nowy rozmiar ekranu?

O czym należy pamiętać, aby aplikacje były "uniwersalne" zarówno dla starszych monitorów, jak i dla nowych panoramicznych proporcji obrazu?

Author: Midhun MP, 2012-09-12

30 answers

  1. Pobierz i zainstaluj najnowszą wersję Xcode .
  2. Ustaw plik ekranu startowego dla aplikacji (na karcie Ogólne w Ustawieniach docelowych). W ten sposób możesz korzystać z pełnego rozmiaru dowolnego ekranu, w tym z podzielonych rozmiarów widoku iPada w systemie iOS 9.
  3. Przetestuj swoją aplikację i miejmy nadzieję, że nic więcej nie zrobisz, ponieważ wszystko powinno działać magicznie, jeśli prawidłowo Ustawiłeś maski auto zmiany rozmiaru lub użyłeś automatycznego układu.
  4. jeśli tego nie zrobiłeś, dostosuj układy widoku, najlepiej za pomocą Auto Układ.
  5. jeśli jest coś, co musisz zrobić dla większych ekranów, to wygląda na to, że musisz sprawdzić wysokość [[UIScreen mainScreen] bounds], ponieważ wydaje się, że nie ma dla tego określonego API. Począwszy od iOS 8 istnieją również klasy rozmiarów, które abstrakcyjne rozmiary ekranu w regularne lub kompaktowe pionowo i poziomo i są zalecanym sposobem dostosowania interfejsu użytkownika.
 476
Author: Filip Radelic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-16 04:18:34

Jeśli masz aplikację zbudowaną dla iPhone ' a 4S lub wcześniejszego, będzie ona działać letterbox na iPhonie 5.

Aby dostosować aplikację do nowego wyższego ekranu, pierwszą rzeczą, którą robisz, jest zmiana obrazu uruchamiania na: [email protected]. Jego rozmiar powinien wynosić 1136x640 (HxW). tak, posiadanie domyślnego obrazu w nowym rozmiarze ekranu jest kluczem do tego, aby aplikacja mogła zająć cały ekran nowego iPhone ' a 5.

(zauważ, że konwencja nazewnictwa działa tylko dla domyślnego obrazu. Nazewnictwo inny obraz "[email protected]" nie spowoduje, że zostanie załadowany w miejsce "[email protected]". Jeśli chcesz załadować różne obrazy dla różnych rozmiarów ekranu, musisz to zrobić programowo.)

/ Align = "left" / .. ale najprawdopodobniej będziesz musiał zrobić jeszcze kilka kroków.
  • upewnij się, że Xibs/Views używają auto-układu do zmiany rozmiaru.
  • użyj sprężyn i rozpórek, aby zmienić rozmiar widoków.
  • Jeśli nie jest to wystarczająco dobry dla Twojej aplikacji, Zaprojektuj Swój XIB / storyboard dla jednego konkretnego rozmiaru ekranu i repozycjonować programowo dla inne.

W skrajnym przypadku (gdy żadne z powyższych nie wystarczy), Zaprojektuj dwa XIB i załaduj odpowiedni w kontrolerze widoku.

Aby wykryć rozmiar ekranu:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}
 116
Author: Sanjay Chaudhry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 07:14:09

Jedyną naprawdę wymaganą rzeczą do zrobienia jest dodanie obrazu startowego o nazwie "[email protected]" do zasobów aplikacji, a w ogólnym przypadku (jeśli masz szczęście) aplikacja będzie działać poprawnie.

Jeśli aplikacja nie obsługuje zdarzeń dotykowych, upewnij się, że okno klucza ma odpowiedni rozmiar. Obejście polega na ustawieniu właściwej klatki:

[window setFrame:[[UIScreen mainScreen] bounds]]

Istnieją inne problemy niezwiązane z rozmiarem ekranu podczas migracji do iOS 6. Przeczytaj IOS 6.0 Release Notes dla szczegóły.

 30
Author: onegray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-19 01:52:17

Czasami (w przypadku aplikacji Pre-storyboard), jeśli układ ma być wystarczająco różny, warto określić inny xib w zależności od urządzenia (zobacz to pytanie - będziesz musiał zmodyfikować kod, aby poradzić sobie z iPhone ' em 5) w init viewController, ponieważ żadna ilość przesuwania z autoresizującymi maskami nie będzie działać, jeśli potrzebujesz innej grafiki.

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

Jest to przydatne dla aplikacji, które są kierowane do starszych wersji iOS.

 23
Author: SomaMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:46

Tutaj znajdziesz fajny samouczek (dla MonoTouch, ale możesz też użyć informacji dla projektów Nie MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. Utwórz nowy obraz na ekranie splash / default (640 x 1136 pikseli) o nazwie "[email protected]"

  2. W iOS Simulator, przejdź do menu Hardware - > Device i wybierz " iPhone (Retina 4-calowy)"

  3. Tworzenie innych obrazów, np. obrazów tła

  4. Wykryj iPhone 5, aby załadować nowe obrazy:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}
 20
Author: Manni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 08:23:25

Łatwo jest migrować iPhone5 i iPhone4 przez XIBs.........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}
 13
Author: shankar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-03 10:00:05

Rozwiązuję ten problem tutaj. Wystarczy dodać przyrostek ~568h@2x do obrazów i ~568h do plików xib. nie trzeba więcej sprawdzać czasu pracy ani zmieniać kodu.

 12
Author: Shimanski Artem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-27 08:02:09

Dodałem nowy domyślny obraz startowy i (sprawdzając kilka innych odpowiedzi SE...) upewniłem się, że moje storyboardy są automatycznie dopasowane do siebie i podglądy, ale siatkówka 4 cala nadal ma skrzynkę na listy.

Potem zauważyłem, że mój info plist miał element linii dla "Launch image" ustawiony na " Default.png", które w ten sposób usunąłem i magicznie letterboxing już się nie pojawił. Mam nadzieję, że to oszczędzi komuś tego samego szaleństwa, które przeżyłem.

 10
Author: SkeletonJelly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 16:50:42

Myślę, że to nie będzie działać we wszystkich przypadkach, ale w moim konkretnym projekcie uniknął mnie od powielania NIB-files:

Gdzieś w common.h możesz zrobić te definicje na podstawie wysokości ekranu:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

W bazie kontrolera:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}
 9
Author: iutinvg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:11:27

W pliku constants.h można dodać następujące wyrażenia definiujące:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)
 9
Author: Khwarezm Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:16:19

Aby ustalić, czy Twoja aplikacja może obsługiwać Iphone 5 Retina, użyj tego: (Może to być bardziej wytrzymałe, aby zwrócić Typ wyświetlacza, siatkówkę 4S itp. po prostu powraca, jeśli iPhone obsługuje iOS5 Retina jako TAK lub nie)

We wspólnym".h " Dodaj plik:

BOOL IS_IPHONE5_RETINA(void);

We wspólnym".m " Dodaj plik:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}
 9
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:17:22

Najpierw utwórz dwa XIB i dołącz wszystkie delegaty, main class do xib, a następnie u możesz umieścić ten warunek wymieniony poniżej w pliku appdelegate.m w

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

Możesz go używać w dowolnym miejscu w programie, w zależności od twoich wymagań, nawet na zajęciach ViewController. Najważniejsze jest to, że utworzyłeś dwa xib Pliki oddzielone dla iphone 4(320*480) and iphone 5(320*568)

 8
Author: mandeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 05:34:08

Wypróbuj poniższą metodę w klasie singleton:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }
 7
Author: Mohammed Ebrahim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:12:03

Możesz użyć funkcji Auto Layout i stworzyć projekt za pomocą rozdzielczości ekranu iPhone 5 i będzie działać zarówno na urządzeniach 4", jak i 3,5", ale w tym przypadku powinieneś mieć wystarczającą wiedzę na temat layout managera.

 7
Author: DeveshM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:12:27

Sprawdzanie bounds z {[2] } nie powiedzie się w trybie poziomym. iPhone 5 uruchamia się tylko w trybie portretowym, ale jeśli chcesz obsługiwać obroty, iPhone 5 "Sprawdź" będzie musiał również obsługiwać ten scenariusz.

Oto makro, które obsługuje stan orientacji:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

Użycie połączenia "preferredMode" pochodzi z innego wpisu, który czytałem kilka godzin temu, więc nie wpadłem na ten pomysł.

 7
Author: Christopher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:13:10

Najpierw pokaż to zdjęcie. Na tym obrazie pokazujesz ostrzeżenie dla wsparcia Retina 4, więc kliknij to Ostrzeżenie i kliknij Dodaj, aby ekran powitalny Retina 4 automatycznie dodał swój projekt.

Pokaż obraz tutaj

I po użyciu tego kodu:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }
 6
Author: Darshan Kunjadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:09:08

Nigdy nie miałem takiego problemu z żadnym urządzeniem, ponieważ miałem jedną bazę kodową dla wszystkich, bez żadnych wartości zakodowanych na twardo. To, co robię, to mieć maksymalny rozmiar obrazu jako zasobu zamiast jednego dla każdego urządzenia. Na przykład, chciałbym mieć jeden dla wyświetlacza retina i pokazać go jako dopasowanie aspektu, więc będzie to Widok tak, jak na każdym urządzeniu. Przychodząc do decydowania o ramce przycisku, na przykład, w czasie wykonywania. W tym celu używam % wartości widoku patentowego, przykład, jeśli chcę, aby szerokość była połowa widoku nadrzędnego wziąć 50 % rodzica i to samo dotyczy wzrostu i środka.

Z tym nie potrzebuję nawet XIB.

 6
Author: infiniteLoop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:16:59

Możesz użyć tej definicji, aby obliczyć, czy używasz iPhone ' a 5 na podstawie rozmiaru ekranu:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

Następnie użyj prostej if instrukcji:

    if (IS_IPHONE_5) {

    // What ever changes
    }
 5
Author: Mutawe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:10:38

Peter, naprawdę powinieneś spojrzeć na Canappi, robi to wszystko za Ciebie, wszystko, co musisz zrobić, to określić układ jako taki:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

Stamtąd Canappi wygeneruje poprawny kod objective-c, który wykryje urządzenie, na którym aplikacja jest uruchomiona i użyje:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappi działa jak Interface Builder I Story Board połączone, z tym, że jest w formie tekstowej. Jeśli masz już pliki XIB, możesz je przekonwertować, dzięki czemu nie musisz odtwarzać całego interfejsu użytkownika z scratch.

 4
Author: metaprogrammer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 15:30:48

Możesz ręcznie sprawdzić rozmiar ekranu, aby określić, na którym urządzeniu się znajdujesz:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}
 4
Author: Robot1987,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:09:47

Możesz dodać ten kod:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }
 3
Author: dbramhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-23 13:53:30

Jest to prawdziwy uniwersalny kod, można utworzyć 3 różne plansze story:

Ustaw tryb Uniwersalny projektu i ustaw główny iPhone story z iPhone5 storyboard i ipad main z iPad target storyboard, teraz Dodaj nowy cel storyboard dla iphone 'a i zmodyfikuj rozdzielczość dla iphone' a 4S lub mniej teraz zaimplementuj swoją aplikację .m

IPhone4 / 4s (to samo dla 3/3Gs) jeden dla iPhone5 i uczynić projekt uniwersalnym, z nowym Storyboard target dla iPada, teraz do AppDelegate.m Pod didFinishLaunching Dodaj ten kod:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

Dlatego stworzyłeś uniwersalną aplikację dla iPhone 3/3GS/4 / 4s / 5 wszystkich generacji iPoda i wszystkich typów iPada

Pamiętaj, aby zintegrować wszystkie IMG z myImage.png i [email protected]

 3
Author: BlackSheep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:08:29

Według mnie najlepszym sposobem radzenia sobie z takimi problemami i unikania kilku warunków wymaganych do sprawdzenia wysokości urządzenia, jest użycie względnej ramki dla widoków lub dowolnego elementu UI, który dodajesz do widoku na przykład: jeśli dodajesz jakiś element UI, który chcesz mieć na dole widoku lub tuż nad paskiem kart, powinieneś wziąć początek y w odniesieniu do wysokości widoku lub w odniesieniu do paska kart (jeśli jest obecny) i mamy właściwość auto zmiany rozmiaru, ponieważ nie jest to wymagane. cóż. Mam nadzieję, że to zadziała dla ciebie

 2
Author: Pranav Bhardwaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-03 12:47:24

Zamiast używać zestawu warunków, możesz automatycznie zmieniać rozmiar widoku, używając rozmiaru ekranu.

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

W moim przypadku chcę widok, który wypełnia przestrzeń między niektórych pól wejściowych na górze i niektórych przycisków na dole, więc stałe w lewym górnym rogu i zmienna w prawym dolnym rogu na podstawie rozmiaru ekranu. Moja aplikacja wypełnia widok obrazu ze zdjęciem zrobionym przez aparat, więc chcę całą przestrzeń mogę dostać.

 1
Author: Charles Jaimet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 14:12:14

Jeśli chcesz przekonwertować już istniejącą aplikację na uniwersalną, musisz wybrać odpowiedni plik xib - > Pokaż narzędzia - > Pokaż Inspektora rozmiaru.

W Inspektorze rozmiaru można zobaczyć Autosizing, za pomocą tego narzędzia można przekonwertować do istniejącej aplikacji na iOS.

 1
Author: Prad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:07:55

Za pomocą xCode 5, Wybierz "Migrate to Asset Catalog" na projekt>ogólne.

Następnie użyj opcji "Pokaż w Finderze", aby znaleźć obraz startowy, możesz zmodyfikować go na 640x1136, a następnie przeciągnąć go do katalogu zasobów, jak pokazano na poniższym obrazku.

Upewnij się, że zarówno sekcja iOS7, jak i iOS6 R4 mają obraz o rozdzielczości 640x1136. przy następnym uruchomieniu aplikacji czarne paski znikną, a Twoja aplikacja będzie korzystać z 4-calowego ekranu

Tutaj wpisz opis obrazka

 0
Author: Alex Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 15:51:04

Punkt wart uwagi - w nowym Xcode musisz dodać ten plik obrazu [email protected] do aktywów

 0
Author: Michal Gumny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-06 08:36:51

Użyj funkcji Auto Layout do wyświetlania. Automatycznie dostosuje się do wszystkich rozdzielczości.

Utwórz dwa XIB dla kontrolera o nazwie kontrolera z przyrostkiem ~iphone lub ~ipad. W czasie kompilacji, Xcode weźmie prawo xib na podstawie urządzenia.

Użyj klas rozmiaru, jeśli chcesz utworzyć pojedynczy xib dla iPhone 'a i iPada, jeśli widok jest wystarczająco prosty, aby portować na iPhone' a i iPada.

 0
Author: Praveen Matanam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:06:28

Podczas testowania na urządzeniu iOS i symulatorze iOS występuje niewielki problem. Wygląda na to, że simulator (XCode 6.0.1) podaje przełączane wartości szerokości i wysokości w [[UIScreen mainScreen] bounds].size w zależności od orientacji urządzenia.

Więc może to być problem przy określaniu odpowiedniego fizycznego rozmiaru ekranu. Kod ten pomaga również odróżnić wszystkie 2014. generacje modeli iPhone:

  • iPhone4s
  • iPhone5 (i iPhone5s)
  • iPhone6 (i iPhone6+)

Może być również łatwo zmienić, aby rozróżnić np. iPhone6 od iPhone6+.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}
 0
Author: vedrano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:06:54

Sugerowałbym użycie maski automatycznej w aplikacjach zgodnie z interfejsem interfejsu użytkownika, oszczędza to wiele kłopotów i jest lepsze niż tworzenie różnych interfejsów dla ekranów iPhone 4 i 5.

 0
Author: Geet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 15:07:19