2016-08-31 16 views
7

Mam UILabel, który umieściłem w serii ujęć skupionych w widoku. Ma początkowy tekst "dotknij, aby się zalogować".Jak zmienić rozmiar UILabel, aby zmieścił się w tekście

Zmieniam wartość etykiety na nazwę użytkownika po zalogowaniu. Po wykonaniu tej czynności etykieta nie będzie już wyśrodkowana, ponieważ UILabel nie zmieniła rozmiaru.

Jak mogę to zrobić z autolayout w programie budującym interfejs?

+0

Musisz pokazać nam ograniczenia, które dodałeś, aby umieścić etykietę. – ozgur

+0

chcesz zmienić szerokość etykiety zgodnie z tekstem? –

Odpowiedz

8

enter image description here

zobaczyć ten scrrenshot

1 najpierw wybrać swoje szerokość etykiety ograniczenie

2 set relacja większy lub równy

3 ustawić domyślną wartość stałą tutaj ustawić go 10

Po zmianie tekstu etykiety zmienia on rozmiar etykiety zgodnie z jej tekstem. mam nadzieję, że to pomoże :)

+0

dodatkowy punkt dla każdego, kto na to patrzy. Upewnij się, że nie ustawiono zarówno ograniczeń wiodących, jak i końcowych, ponieważ zastępują ograniczenia "większe niż" – Josh

-1

Iam zgadywania etykieta nie jest coraz wysokość i szerokość, rozważają te ograniczenia i wtedy, gdy zmiany tekstowe użyć tej metody, aby określić wysokość i szerokość:

func labelSizeWithString(text: String, maxWidth : CGFloat,numberOfLines : Int) -> CGRect{ 
    let label = UILabel(frame: CGRectMake(0, 0, maxWidth, CGFloat.max)) 
    label.numberOfLines = numberOfLines 
    label.text = text 

    label.sizeToFit() 

    return label.frame 
} 
+0

OP chce to zrobić za pomocą Autolayout. Nie możesz zaktualizować ramki podczas jej używania. – ozgur

+0

można uzyskać zaktualizowaną wysokość i szerokość, a następnie odpowiednio zmienić ograniczenia wysokości i wagi ... uprzejmie przeczytać moją odpowiedź prawidłowo –

+0

Jest to przesada i nieefektywne, aby utworzyć UILabel tylko po to, aby uzyskać szerokość i wysokość tekstu. Istnieje ['boundingRectWithSize (_: options: context:)'] (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSAttributedString_Class/#//apple_ref/occ/instm/NSAttributedString/boundingRectWithSize: options: context :) aby to zrobić. Poza tym uzyskanie szerokości i wysokości nie rozwiąże problemu OP dotyczącego centrowania etykiety. Będzie musiał wykonać wiele obliczeń, aby umieścić etykietę w centrum jego superwizji. – ozgur

0

można ustawić UILabelframe.width większe, może ta sama szerokość co ekran.

Następnie ustaw

label.textAlignment = NSTextAlignmentCenter

0

1.showing początkowy tekst na etykiecie 2.Po naciśnięciu przycisku zmienia tekst, który pokazuje w środku 3.Look ekranie w ograniczeniach trzeci obraz, biorąc pod uwagę dwa ograniczenia 1.top aby 2.horizontally w środku pojemnika

Inną rzeczą, jeśli u danego środka szerokości dla relacji etykieta, zmień je więcej niż równe. [Kliknij szerokość ograniczenia, zobaczyć po prawej stronie góry tam zmienić relację ]

Powiązane problemy