2012-10-10 16 views
9

Użycie następującego kodu w celu dostosowania zwykłych UIButtonów wpływa również na elementy UIBarButtonItems i wyczyść przyciski w polach tekstowych.Jak ustawić wygląd UIButton bez wpływu na elementy UIBarButtonItems?

[[UIButton appearance] setBackgroundImage:greenButtonImage forState:UIControlStateNormal]; 

zrobić nie chcieć dostosować te ostatnie elementy w ogóle, tylko regularne okrągłe rect przycisków. Zdaję sobie sprawę z używania wyglądu: WhenContainedIn: można użyć do ustawienia wyglądu niestandardowego dla UIBarButtonItems i UITextField, ale chcę, aby te przyciski pozostały standardowe. Podklasowanie nie jest tutaj opcją, ponieważ nie powinno być wymagane w przypadku tak prostego zadania.

Jest podobne pytanie, ale nie rozwiązuje problemu. Why does -[[UIButton appearance] setBackgroundImage] affect the initial appearance of UIBarItem objects and how do you correct it?

+1

Byłem w stanie naprawić problem z UITextField, ustawiając je wyraźnie na czystym obrazie tła. Nie jest to jednak dobre rozwiązanie. –

+0

Jak inicjujesz swoje UIBarButtonItems? Czy ustawiasz właściwość "customView" na obiekt UIButton? Jeśli możesz podać przykładowy kod do tworzenia UIBarButtonItem, to jestem pewien, że mogę pomóc ... Wykonuję wiele dostosowań z wyglądem serwerów proxy i przyciskami/UButtons w moich aplikacjach i nie miałem tych problemów. – DiscDev

Odpowiedz

2

Jedno rozwiązanie Użyłem przed jest zerowa z nieruchomości „backgroundImage” dla UIButtons zawartego wewnątrz UINavigationBar:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:nil forState:UIControlStateNormal]; 

powinno to pozwolić na dostosowanie UIButtons w innych przypadkach, bez dotykania wewnątrz elementu UIBarButtonItem w UINavigationBar.