Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Tworzenie jednej aplikacji dla iPhone'a i iPad'a


  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 betrax

betrax
  • 90 postów
  • SkądWarszawa

Napisano 26 czerwca 2010 - 11:38

Byłbym wdzięczny gdyby ktoś napisał jak pisze się aplikację która będzie jednocześnie na iPhone i iPad. Przy wysyłaniu do AppStore widzę tylko możliwość wysylania do nich binarki dla iPhone.

#2 nielololek

nielololek
  • 706 postów
  • SkądPolska

Napisano 26 czerwca 2010 - 12:42

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 ;)

#3 betrax

betrax
  • 90 postów
  • SkądWarszawa

Napisano 26 czerwca 2010 - 14:17

Chodziło mi bardziej o to jak zrobić aplikację która będzie rozpoznawała czy jest uruchomiona na iPadzie czy na iPhonie.

#4 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 26 czerwca 2010 - 17:40

Samo rozpoznawanie jest proste, z tym że w sofcie poniżej 3.2 brakuje odpowiednich funkcji więc trzeba je sobie zdefiniować.
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 nielololek

nielololek
  • 706 postów
  • SkądPolska

Napisano 27 czerwca 2010 - 13:22

Skoro o to ci chodzi to ja to zrobiłem tak:
_____________________________________
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 MDW

MDW
  • 653 postów
  • SkądPolska

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 nielololek

nielololek
  • 706 postów
  • SkądPolska

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 :P

W lewym górnym rogu Xcode jest rozwijana lista. (Simulator - 4.0 | Debug | Nazwa_Projektu ... i coś tam dalej :P )
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 MDW

MDW
  • 653 postów
  • SkądPolska

Napisano 27 czerwca 2010 - 16:38

Jasne, wystarczą 2 kliknięcia :P
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. :) Ale ta niestety jeszcze musi...

#9 betrax

betrax
  • 90 postów
  • SkądWarszawa

Napisano 08 lipca 2010 - 02:23

A czy jest jakaś możliwość rozpoznania iPhone4? Problem w tym, że kiedy zmieniam tło przycisku:
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