2014-11-23 10 views
5

Tak więc stworzyłem ten scenariusz, aby zrozumieć, w jaki sposób liczba wyświetleń rośnie w zależności od ich zawartości. Nadal nie jestem w stanie tego dokonać.Jak zmienić wysokość uiview za pomocą automatycznego układu?

To co mam teraz:

enter image description here

TextView rośnie w zależności od zawartości. jednak zawierający go widok zanika. z jakimi ograniczeniami należy się posługiwać, aby po powiększeniu uitextview jego macierzysty widok również wzrósł?

Odpowiedz

1

NA UITextView uczynić swój Państwo odznaczone Są

  • Przewijanie Włączone
  • Odrzucenia
  • Bounce Poziomo
  • Bounce Pionowo
  • Pokazuje Wskaźnik pozioma
  • Pokazuje wskaźnik pionowy

Teraz Zmień ograniczenia automatycznego układu, takie jak to.

enter image description here

Constraints for parent view

+0

Wielkie dzięki :) Teraz ma sens! – thirdage

+0

Czy możesz sprawdzić mój inny scenariusz, ponieważ nie mogę kontrolować widoku nagłówka tabeli: http://stackoverflow.com/questions/27077818/how-to-stop-a-uitextview-from-covering-uitableviewcell – thirdage

-2

Na stronie scenorysu kliknij swój tekst. Następnie kliknij małe trójkątne w prawym dolnym rogu.

Najpierw kliknij "Wyczyść ograniczenia". A następnie w "Dodaj brakujące ograniczenia".

To najprostszy sposób.

+0

To może być łatwe, ale to daleko od wyraźna i nie zawsze będą robić to, co trzeba zrobić, tak jak w tym przypadku. – nhgrif

+0

Uważam, że wysokość widoku tekstu jest dynamiczna i nie można bezpośrednio zmienić wysokości oceny. – Priyatham51

10

Zacznij od oczyszczenia wszystkich swoich ograniczeń ze wszystkiego, więc mamy świeży łupek.

Krok 1: Zbuduj swoją hierarchię widoków. W tym przykładzie chcemy coś takiego:

enter image description here

widok kontrolera widoku, który będziemy nazywać parentView ma podrzędny, który będziemy nazywać redView. Ten redView ma dziecko, pole tekstowe, które nazwiemy textField.

Hierarchia wygląda następująco:

enter image description here

Krok 2: Ustaw żadnych ograniczeń, które są specyficzne dla każdego indywidualnego widzenia. W tym przypadku prawdopodobnie chcemy ustawić ograniczenie szerokości w naszym widoku tekstowym. Na razie ustawię szerokość 200 punktów.

enter image description here

Etap 3: ustalenie ograniczeń między textView i jego rodzica, redView. Powiedzmy, że chcemy mieć 10-punktową granicę dookoła. Dodajmy te ograniczenia:

enter image description here

Gdy dodaliśmy te ograniczenia my dostaje kilka ostrzeżeń układu auto i błędów. Na początek, ponieważ ograniczenia Dodałam do i z miejsca, aby Superview nie odpowiadają rzeczywiste rozmiary, będę miał jakieś ostrzeżenia tak:

enter image description here

Będzie też pewne błędy opisujące brakujący X i Pozycje Y dla redView i dla textView. Tutaj jest naprawdę dwa razy więcej błędów. textView wie, gdzie się pozycjonować względem redView. Nie potrzebujemy więcej więzów, aby uporządkować pozycję textView. Jednak redView nie wie, gdzie się ustawić jeszcze ... i tak ostatecznie, textView również nie wie dokładnie.

Możemy zaktualizować ramkę textView, aby pozbyć się ostrzeżeń, ale przejdźmy dalej i naprawmy rzeczywiste błędy.

Krok 5: Ustaw ograniczenia redView w stosunku do superView. redView już wiem, jaki rozmiar ma być. Zauważ, że nie mieliśmy błędów dla szerokości redView. Po prostu nie wie, gdzie być. W takim przypadku pójdę prosto i powiem, że chcemy, aby środek wyśrodkowany był redView. Więc chcemy dodać te ograniczenia:

enter image description here

Teraz mamy ustalone pewne problemy. Jedyny problem, który pozostaje, to height na wszystko.

Aby to naprawić, musimy ustawić priorytety wielkości treści na textView. Ustaw wszystkie na 1000 i zmień właściwość "Rozmiar wewnętrzny" na "Zastępczy".

enter image description here

Do tej pory wszystkie błędy układ automatycznego powinien zniknąć i powinniśmy być pozostawione tylko z ostrzeżeń, ponieważ nasze ramy storyboard nie pasują nasze ograniczenia co mówią, że powinno.

Możemy naprawić wybierając parentView i aktualizowanie wszystkich klatek:

enter image description hereenter image description here

Jest jeden końcowy zastrzeżenie do tego układu auto układanki, jeśli chodzi o autosizing na podstawie wielkości partnerskiej: co się stanie, jeśli nasz widok tekstu nie zawiera treści?

Jeśli nasz widok tekstowy nie zawiera żadnych treści, układ automatyczny wybierze wysokość 0, a nasi użytkownicy nie będą nawet mogli zobaczyć, że jest tam widok tekstowy, a co dopiero zmniejszać go, aby dodać zawartość (i sprawić, aby rozszerzać). Podczas korzystania z automatycznego układu i wymiarowania na podstawie treści powinniśmy prawie zawsze mieć pewność, że ustawiliśmy konkretny lub minimalny rozmiar dla widoku treści.

Nie musimy się martwić o naszą szerokość textView, ponieważ ustawiamy to wyraźnie na 200. Dodajmy więc minimalne ograniczenie wysokości. Zacznij dodając żadnych ograniczeń Wzrost:

enter image description here

Teraz przejdź do inspektora size dla textView, uważają to ograniczenie wysokości dodaliśmy i edytować go w większy niż lub równy przymusu:

enter image description here

Scenorys nie odzwierciedla zmiany w treści naszej textView i odpowiednio ją zmienia, ale twoje ograniczenia są teraz poprawnie skonfigurowane i będzie to działać poprawnie na Twoim urządzeniu lub w symulatorze.

+1

Myślę, że musimy również dodać ograniczenie szerokości w widoku czerwonym. – Priyatham51

Powiązane problemy