W UIToolbar
, dodałem UITextField
na środku paska (która zostanie dodana jako UIBarButtonItem
) z innym UIBarButtonItem
(przycisk działania) obok niej. Dodałem elastyczne przyciski na pasku po lewej i prawej stronie. Wygląda świetnie na portret, ale kiedy obracam się do pejzażu, centralizuje je i wygląda dobrze, ale potrzebuję pola tekstowego, aby rozciągnąć, by wypełnić szerokość i wcisnąć ostatni przycisk w prawo - dokładnie tak, jak w Wiadomościach - na iPhone i iPad.Regulacja szerokości UITextField wypełnić pasek w krajobrazie
Pomyślałem, że Auto Layout załatwi sprawę, ale stany Apple nie mogą tworzyć ograniczeń dla UIBarButtonItem
s. I rzeczywiście, gdy wybiorę dowolny przycisk paska lub pole tekstowe, nie będzie można tworzyć żadnych ograniczeń.
Czy możesz mi powiedzieć, jak to osiągnąć? Dzięki!
EDIT: Próbowałem kilka innych kombinacji ze stałymi/elastycznych przestrzeniach. Kiedy nie dodawać dowolne pole tekstowe i przycisk akcji są nasunięte na lewo:
Jeżeli zamiast zrobić stałe przestrzenie, wygląda dokładnie takie same jak powyżej z 0 szerokościach, lub jeśli ustawić szerokość, to oczywiście je popchnie. Ta ostatnia przestrzeń po prawej stronie nie ma żadnego skutku - nie jest ustawiona po prawej stronie, więc znika z ekranu.
Próbowałem ustalonej przestrzeni po lewej stronie i elastycznej po prawej stronie, z środkową jedną stałą (lub bez środkowej), i wygląda jak na powyższym zrzucie ekranu. Potem zmienił środkowy elastycznych i okazało się to tak:
Jeśli zmienię pierwszy elastyczny, nikt w środku (lub jeśli dodam ustalonej wartości), a flxed po prawej stronie, zostanie przeniesiony na prawo:
Jeśli pierwszy jest elastyczny, w środku jest elastyczny, a prawo jest stała, to jak to wygląda:
We wszystkich przypadkach szerokość pole tekstowe pozostaje tą samą wartością statyczną e jak to było pierwotnie ustawione w scenorysie. Myślę, że problem polega na tym, że kiedy ustawiasz szerokość, przeciągając ramkę, nie ma niebieskich wskazówek do przyciągania, aby zawsze pozostała taka sama szerokość.
Czy brakowało mi kombinacji przestrzeni? Jeśli nie mogę zaimplementować pożądanego zachowania w konstruktorze interfejsów, w jaki sposób można to osiągnąć w kodzie?
nie działa dla mnie w Xcode 6.2/systemów iOS 8: the UITextField pozostaje stałym rozmiarze, więc pasek narzędzi jest odcięty w niewielkich rozmiarów i nie jest na tyle szeroki, w normalnym rozmiarze. – 7stud
Dowiedziałem się, dlaczego to nie * działało * dla mnie: patrzyłem na wyniki w Preview, gdzie można zobaczyć jednocześnie iPhone'a i iPada w tym samym czasie, patrz tutaj (ignoruj fakt, że mówi Swift: samouczek nie ma nic wspólnego z Swift): https://www.youtube.com/watch?v=p5wDdvdDbM. Wygląda na to, że podgląd pokazuje tylko to, co zrobiłeś w IB, więc Preview nie widzi kodu w odpowiedzi. W rezultacie w Preview mój TextField nie rozciągał się, ale kiedy uruchomiłem (Run'ed ?!) mój kod na różne urządzenia (kliknij urządzenie na pasku przeskoczeniowym po prawej stronie przycisku Stop i wybierz inne urządzenie), ... – 7stud
... TextField dopasował się do dostępnej przestrzeni. Dzięki! – 7stud