2012-01-11 10 views
6

Wiem, podobne pytanie jest już zadawane, ale nie dostałem satysfakcjonującej odpowiedzi. Więc ponownie dodaję to pytanie.Jak utworzyć aplikację tematyczną?

Na podstawie wyboru użytkownika w aplikacji iPhone, muszę zmienić wygląd aplikacji (kolorowe obrazy tła itp.). Czy istnieje jakiś standardowy sposób, aby to osiągnąć?

Jednym z możliwych rozwiązań może być powielanie plików xib dla każdego motywu i ładowanie go na podstawie wyboru. Czy to dobre podejście? głównie dlatego, że okablowanie gniazdek i akcji kopiowania kopii XIB brzmi zbędnym zadaniem.

Chciałbym poznać eksperta w tej sprawie. Dzięki za pomoc z góry.

-mia

Odpowiedz

0

Na trasie non-XIB

Kolor: iOS 5 odsłania nowe API wygląd. Większość elementów interfejsu użytkownika ma opcję ustawienia koloru tintColor lub backgroundColor. Rzadko, nawet obraz tła.

Czcionka: Zawsze można było zmienić, ale nie można było go ożywić.

Obraz tła: Twój główny UIView powinien mieć opcję obrazu tła lub, jeśli to się nie uda, kolor tła z obrazem wzoru.

+0

To tylko dynamicznie zmieniający się kolor na podstawie wyboru. To dobrze, ale szukam wydajnej opcji, takiej jak motywy lub style, w których mogę po prostu dynamicznie przełączać motywy, ale nie muszę jawnie obsługiwać kodu lub duplikatów. – mia

+0

[UIButton setTintColor: [UIColor someColor]]; musisz sam sobie poradzić. Wykonaj kilka metod z pewnymi ustalonymi wartościami kolorów dla każdego "nowego stylu", jak to nazywasz. – CodaFi

0

Najlepszy sposób na zastosowanie aplikacji aplikacji IOS opartej na motywach (bez korzystania z trasy ~ xib). powinieneś utworzyć plik build.xml, który będzie zawierał wszystkie elementy kompozycji. Powinieneś zachować swój układ taki sam i możesz zmieniać obrazy, styl, czcionki, język, widoki, w tym układzie według użytkownika pref. W ten sposób nie powielasz żadnego kodu i osiągniesz najlepsze wyniki ze swojej aplikacji.

+0

Niestety, nie rozumiem twojego wyjaśnienia. Czy mógłbyś wyjaśnić trochę więcej. To nie jest dynamiczny rt? oznacza, że ​​po uruchomieniu programu użytkownik nie może zmieniać tematów. – mia

0

Jak powiedział CodaFI, jeśli używasz iOS 5 lub nowszego, masz już funkcję motywu. Działa to tak:

  • Dodaj protokół <IAppearanceContainer> do klasy.

  • Udekoruj nieruchomość, którą chcesz zmienić, podając UI_APPEARANCE_SELECTOR. Przykład:

     
    @interface UINavigationBar : ... <IAppearanceContainer> 
    @property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR; 
    @end 
    

  • Zmiana koloru dla wszystkich instancji klasy:
     
    [[UINavigationBar appearance] setTintColor:[UIColor redColor]]; 
    

Powyższy przykład jest UINavigationBar, ale będzie pracować z dowolnej klasy niestandardowej. Aby zobaczyć obiekty już obsługiwane w systemie iOS 6.1 sprawdzić dokumentację lub uruchomić następujące polecenia:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers 

grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//' 

Powiedzmy chcesz tematów modułowe:

  • Napisz duży plik plist ze wszystkich czcionek, kolorów muzyka, a co nie. Każdy z tych plików będzie motywem.
  • Odczytaj plik przez singleton i ustaw wartości z liniami takimi jak [x appearance] setWhatever:<plist value>] dla każdego motywującego elementu.
  • Jeśli masz wystąpienia tego samego elementu, który musi wyświetlać różne elementy, pobierz te obrazy przez singleton.

To jest mniej więcej wskazówka od Amit Vyawahare. Powiedziałem plist zamiast xml, ponieważ są one łatwiejsze do odczytania. Nie duplikuj NIBs, chyba że naprawdę musisz.

Powiązane problemy