2014-10-10 10 views
7

Mam następujący problem w mojej aplikacji na iPhone'a. mam 4 przyciski w moim IB również związany z moim UIViewController (IBOutlet) Kiedy na przykład ukryć drugi przycisk wich jest AfvalSoorten z [self.btnAfvalSoorten setHidden:YES]; to znika, to jest to, co chcę, ale nadal mam przestrzeń przycisk kiedy debugować aplikację na symulatorze.Xcode IB: UIButton ukryty, ale nadal ma przyciski spacji

Jak mogę się tego pozbyć? Poniżej znajduje się przykład.

enter image description here

enter image description here

Czy istnieje opcja na Storyboard dla przycisków? spiąć razem?

Odpowiedz

15

Powinieneś użyć autolayout. W przeciwnym razie jest to koszmar z nowymi rozmiarami ekranu.

Dzięki autolayout możesz zrobić to, o co programujesz: ustaw przyciski z pewnymi ograniczeniami, a kiedy zdecydujesz się ukryć przycisk usuń ograniczenia, które nie są potrzebne. Jest elastyczny i potężny, ale nie jest najprostszym sposobem dla początkujących.

Jeden prosty sposób to zrobić z dodatkowymi ograniczeniami.Na przykład, jeśli masz przyciski 1, 2 i 3 (patrz zrzut ekranu) i planują przycisk 2, aby usunąć, można dodać dodatkowe wiązanie pomiędzy 3 i 1:

enter image description here

To ograniczający powinien mieć mniej priorytet (250 w moim przykładzie) niż inne (domyślnie 1000). Oznacza to, że ograniczenie nie zostanie zastosowane, gdy przycisk 2 jest na miejscu (z ograniczeniami o wyższym priorytecie).

Następnie należy usunąć przycisk, zamiast go ukrywać.

[self.button removeFromSuperview]; 

Po ukryciu przycisku nadal brany pod uwagę układ układu do podejmowania decyzji, a układ jest bardziej złożony. Jeśli chcesz zachować przycisk wokół upewnij się, że używa on modyfikatora strong w deklaracji właściwości.

+0

Świetne rozwiązanie, ale uwaga: jeśli planujesz uczynić go widocznym ponownie ('superview.addSubview (button)') to nie działa. Stracisz swoje ograniczenia. –

0

Po prostu ukryłeś to. Musisz ustawić ramki zgodnie z potrzebami. LUB Możesz ustawić autolayout.

+0

autolayout w serii ujęć ya oznacza i co z ramkami? –

0

Być może istnieje rozwiązanie z autoLayout w IB, ale nie jestem tego pewien. Programowo możesz dodać cały swój przycisk do tablicy w kolejności. a gdy tylko ukryjesz przycisk lub nie, przechodzisz przez tablicę z przyciskiem i za każdym razem, gdy znajdujesz ukryty, ustawiasz współrzędną y na ramce do wartości a zwiększasz tę wartość o to, czego potrzebujesz, aby następny nie był ukryty zostaną umieszczone zgodnie z ostatnią zastosowaną pozycją.

+0

autolayout jest zaznaczone nic się nie dzieje –

+0

autolayout zaznaczone oznacza, że ​​chcesz użyć automatycznego układu dla twojego układu xib teraz auto nie robi nic samodzielnie. Po prostu mówisz, że otrzymasz porządek typu automatycznego układu dla widoku zarządzania pozycjami obiektu. Musisz dodać i grać z ograniczeniem. nic nie jest automatyczne. –

0
  1. Możesz dodawać przyciski programowo -> będziesz mieć tablicę z Btns i metodę dodawania tablicy do kontrolera widoku.
  2. Możesz grać z ograniczeniami i ustawić ograniczenie wysokości dla drugiego przycisku, gdy ukryjesz go do 0, ale wszystkie przyciski powinny być połączone z ograniczeniami w tym przypadku.
+0

Więzy są właściwością przycisku przepraszam, jestem nowy w Objective c :) –

+0

przeczytaj np. http://www.techotopia.com/index.php/Working_with_iOS_7_Auto_Layout_Constraints_in_Interface_Builder – kabarga

+0

lub jeszcze lepiej zacząć (2 części) http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios- 7-part-1 – kabarga

2

Lepszym rozwiązaniem dla powyższego scenariusza - Nie musisz ustawić dowolny autoLayout lub ramek :)

Używaj UITableView i tworzyć niestandardowe komórkę z UIButtons w nim.

  1. Set UITableViewCellSelectionStyle do None

  2. tutaj swoje przycisk tło jest takie same dla wszystkich komórek

  3. Utwórz tablicę z powyższych tytułów przycisku

  4. Gdy kiedykolwiek chcesz ukryć przyciski tylko usuń go z tablicy.

2

Współczesnym preferowanym sposobem jest użycie widoków stosu. Great tutorial. Wymaga iOS 9.

Ikonę widoku stosu znajdziesz na pasku narzędzi Automatyczne układanie w prawym dolnym rogu obszaru roboczego storyboardu.

Stack View Button

Powiązane problemy