
Tworzenie jednej aplikacji dla iPhone'a i iPad'a
#1
Napisano 26 czerwca 2010 - 11:38
#2
Napisano 26 czerwca 2010 - 12:42

#3
Napisano 26 czerwca 2010 - 14:17
#4
Napisano 26 czerwca 2010 - 17:40
Ja mam do tego celu taką funkcję:
// DeviceSupport.h #import <Foundation/Foundation.h> #ifndef UI_USER_INTERFACE_IDIOM() typedef enum { UIUserInterfaceIdiomPhone, UIUserInterfaceIdiomPad, } UIUserInterfaceIdiom; #define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom]:UIUserInterfaceIdiomPhone) #define _IPHONE_IPOD #endif extern BOOL DeviceIsPad(void);
// DeviceSupport.m #import "DeviceSupport.h" BOOL DeviceIsPad(void) { if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) { return(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); } return(NO); }
w plikach w których potrzebujesz wystara dołączać DeviceSupport.h i posługiwać się funkcją DeviceIsPad
#5
Napisano 27 czerwca 2010 - 13:22
_____________________________________
NSString *currentDevice = [UIDevice currentDevice].model; if ([currentDevice rangeOfString:@"iPad"].loaction != NSNotFound]) { //Coś tam dla iPada } else { //Jeśli currentDevice nie zawiera wyrazu "iPad" //Coś tam dla iPhone/iPod }
__________________________________________________
Użyłem rangeOfString: bo w symulatorze 'currentDevice' ma wartość 'iPad Simulator' , a jeśli będzie to prawdziwe urządzenie to wtedy będzie to samo 'iPad'
#6
Napisano 27 czerwca 2010 - 15:30
Nie wiem czy to to, ale ja w swoim projekcie mam tak:
Wybierz: Project > Edit Project Settings
W okienku, które się pojawi wybierz Build.
Przewiń w dół do: Targeted Device Family - Zmień to, co tam jest na: iPhone/iPad .
Może to to, spróbuj
Ja mam głupie problem, bo nie potrafię potem takiej uniwersalnej aplikacji uruchomić w symulatorze iPhone. Zawsze odpala się w symulatorze iPada. Oczywiście mogę w menu symulatora zmienić device na iPhone. Jednak po "Build and run" symulator zmienia się na iPada i aplikacja uruchamia się na iPadzie. Orientujesz się jak decydować na czym (na jakim symulatorze) ma się zainstalować i uruchomić aplikacja?
#7
Napisano 27 czerwca 2010 - 16:26
Ja mam głupie problem, bo nie potrafię potem takiej uniwersalnej aplikacji uruchomić w symulatorze iPhone. Zawsze odpala się w symulatorze iPada. Oczywiście mogę w menu symulatora zmienić device na iPhone. Jednak po "Build and run" symulator zmienia się na iPada i aplikacja uruchamia się na iPadzie. Orientujesz się jak decydować na czym (na jakim symulatorze) ma się zainstalować i uruchomić aplikacja?
Jasne, wystarczą 2 kliknięcia

W lewym górnym rogu Xcode jest rozwijana lista. (Simulator - 4.0 | Debug | Nazwa_Projektu ... i coś tam dalej

Kliknij na nią i w "Active Executable" wybierz na czym chcesz uruchomić aplikację:
Nazwa_Projektu - iPad Simulator 3.2
lub
Nazwa_Projektu - iPhone Simulator 4.0
...chyba że tak robiłeś to nie wiem...
#8
Napisano 27 czerwca 2010 - 16:38
Jasne, wystarczą 2 kliknięcia
Kliknij na nią i w "Active Executable" wybierz na czym chcesz uruchomić aplikację:
Nazwa_Projektu - iPad Simulator 3.2
lub
Nazwa_Projektu - iPhone Simulator 4.0
Hmmm... Ja mam tak tylko wersje z "iPad Simulator". A w Edit Project Settings" w "Targeted Device Family" mam ustawione "iPhone/iPad". Co jest?

Ok, już jest dobrze. Na razie miałem ciągle iPhoneSDK 3.2, bo najpierw chciałem kilka rzeczy zrobić w swojej aplikacji, a potem zrobić aktualizację do 4.0. Jak zrobiłem to pojawił się Simulator 4.0.
Mam pytanie dotyczy tego czy w jakikolwiek sposób mogę rozpoznać czy aplikacja została uruchomiona na starym czy nowym iPhone? Jest coś co pozwoli mi zidentyfikować urządzenie?
Wiem, że nie powinienem się bawić w rozpoznawanie iPhone i iPhone4, bo zostałly ustalone mechanizmy dzięki którym urządzenia te można traktować jak jedno i to samo. Jednak w istniejącej aplikacji ze względu na to, że robię ją na różne inne platformy mam coś z czego nie mogę zrezygnować i bardzo na rękę byłaby mi możliwość rozpoznania czy aplikacja została uruchomiona na iPhone2G/3G/3GS czy iPhone4. Następne aplikacje już tak nie będą miały.

#9
Napisano 08 lipca 2010 - 02:23
NSString* resourcePath = [[NSBundle mainBundle] pathForResource:@"button_1" ofType:@"png"]; UIImage* image = [[UIImage alloc] initWithContentsOfFile:resourcePath]; [button1 setImage:image forState:UIControlStateNormal]; [image release];
To już wstawienie pliku z dodaniem na końcu nazwy @2x nic nie daje.
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych