2012-04-02 27 views

Odpowiedz

12

Znajdziesz odpowiedź here

EDIT: skopiowane bezpośrednio z bloga:

  • startowych nie powoduje layoutSubviews nazywać (duh)
  • addSubview powoduje layoutSubviews być wezwała widok jest dodawany, widok jest dodawany do (widok docelowy), a wszystkie podelementy widoku docelowego setFrame inteligentnie wywołuje layoutSubviews na widoku, który ma ustawioną ramkę tylko wtedy, gdy rozmiar para Miernik ramy różni
  • przewijanie UIScrollView powoduje layoutSubviews być nazywane w Scrollview i jest Superview
  • obracania urządzenia tylko wywołuje layoutSubview w widoku rodzic (odpowiadające viewControllers podstawowy widok)
  • removeFromSuperview - layoutSubviews jest wywoływany tylko w widoku podglądu:
+3

+1 za odpowiedź. Zastanów się jednak nad dodaniem części opisu z linku w swojej odpowiedzi, aby w przyszłości, jeśli w przyszłości połączenie się zmniejszy, Twoja odpowiedź będzie nadal przydatna. –

1

Masz rację. Układ subviews jest automatycznie wywoływany. Sprawdź dokumentację, aby uzyskać więcej informacji na ten temat.

Dokumenty nie określają konkretnie KIEDY to się nazywa. Można jednak prawie zagwarantować, że często jest to nazywane. Naprawdę chcesz tylko zastąpić tę metodę, gdy nie możesz zmienić rozmiarów swoich subviews lub przenieść się za pomocą rozporek i sprężyn. Jednym z przykładów może być reorganizacja pozycji subviews, gdy urządzenie zmieni orientację.

1

Metoda layoutSubviews będzie wywoływana za każdym razem, gdy system uzna, że ​​widok należy ponownie rozłożyć. Na przykład, jeśli ramka widoku zostanie zmieniona lub dodany zostanie podgląd podzbioru itp. Jeśli chcesz ręcznie uruchomić to, możesz zadzwonić na metodę setNeedsLayout.

Powiązane problemy