Używam UITextField
. Chcę zwiększyć jego wysokość, ale nie znalazłem żadnej właściwości, aby to zrobić. Jak mogę to osiągnąć?
Odpowiedzi:
CGRect frameRect = textField.frame;
frameRect.size.height = 100; // <-- Specify the height you want here.
textField.frame = frameRect;
Nie możesz zmienić wysokości stylu zaokrąglonej prostokątnej ramki. Aby ustawić wysokość, po prostu wybierz dowolny styl obramowania inny niż zaokrąglone obramowanie w Xcode:
W końcu znalazłem na to poprawkę!
Jak stwierdziliśmy, IB nie pozwala nam zmienić wysokości stylu krawędzi zaokrąglonych narożników. Więc zmień go na dowolny inny styl i ustaw żądaną wysokość. W kodzie zmień z powrotem styl obramowania.
textField.borderStyle = UITextBorderStyleRoundedRect;
viewWillLayoutSubviews
. Dodałem obraz do pola leftView
tekstowego i trochę tekstu, a kiedy to się stanie viewDidLoad
, oba dziwnie się rozciągają.
textField.borderStyle = .RoundedRect
Jeśli używasz Auto Layout, możesz to zrobić na tablicy Story.
Dodaj ograniczenie wysokości do pola tekstowego, a następnie zmień stałą ograniczenia wysokości na dowolną żądaną wartość. Kroki przedstawiono poniżej:
Krok 1: Utwórz ograniczenie wysokości dla pola tekstowego
Krok 2: Wybierz wiązanie wysokości
Krok 3: Zmień stałą wartość ograniczenia wysokości
borderStyle
dowolną wartość oprócz zaokrąglenia. Użyj, Editor -> Size to Fit Content
aby układ robił swoje. Użyj inspektora właściwości na swoim, UITextField
aby sprawdzić jego wysokość. Użyj tego, aby ustawić ograniczenie wysokości, a teraz możesz zmienić borderStyle
tył na zaokrąglony.
1.) Zmień styl obramowania w InterfaceBuilder.
2.) Po tym możesz zmienić rozmiar.
3.) Utwórz IBOutlet do swojego TextField i wprowadź następujący kod do swojego, viewDidLoad()
aby zmienić z powrotem BorderStyle.
textField.borderStyle = UITextBorderStyleRoundedRect;
Swift 3:
textField.borderStyle = UITextBorderStyle.roundedRect
Wykonaj te dwa proste kroki, aby zwiększyć wysokość swojego UItextField
.
Krok 1: kliknij prawym przyciskiem myszy plik XIB i otwórz go jak w "Kod źródłowy".
Krok 2: Znajdź to samo UITextfield
źródło i ustaw ramkę, jak chcesz.
Możesz użyć tych kroków, aby zmienić ramkę dowolnych kontrolek Apple.
Aktualizacja dla iOS 6: przy użyciu automatycznego układu, mimo że nadal nie można ustawić wysokości UITextField za pomocą Inspektora rozmiaru w programie Interface Builder (przynajmniej od Xcode 4.5 DP4), można teraz ustawić ograniczenie wysokości na it, który można edytować w programie Interface Builder.
Ponadto, jeśli ustawiasz wysokość klatki według kodu, automatyczne układanie może ją zresetować w zależności od innych ograniczeń, które może mieć twój widok.
Wiem, że to stare pytanie, ale chciałem tylko dodać, jeśli chcesz łatwo zmienić wysokość UITextField od wewnątrz IB, a następnie po prostu zmień typ obramowania pola UITextfield na dowolny inny niż domyślny typ zaokrąglonego narożnika. Następnie możesz łatwo rozciągać lub zmieniać atrybuty wysokości z poziomu edytora.
@IBDesignable
class BigTextField: UITextField {
override func didMoveToWindow() {
super.didMoveToWindow()
if window != nil {
borderStyle = .roundedRect
}
}
}
UITextField
się BigTextField
.Border Style
TO none
.Mój żałosny wkład w ten głupi problem. W IB ustaw styl na none, aby można było ustawić wysokość, a następnie w IB ustaw klasę jako podklasę, UITextField
która wymusza zaokrąglenie stylu do prostokąta.
@interface JLTForcedRoundedRectTextField : UITextField
@end
@implementation JLTForcedRoundedRectTextField
- (void)awakeFromNib
{
self.borderStyle = UITextBorderStyleRoundedRect;
}
@end
Dzięki temu nie musiałem hakować pliku XIB ani pisać kodu stylu do kontrolera widoku.
Wysokość UITextField nie jest regulowana w Inspektorze atrybutów tylko wtedy, gdy ma domyślny styl obramowania zaokrąglonych rogów, ale dodaje do niego ograniczenie wysokości (plus wszelkie inne ograniczenia, które są wymagane do spełnienia systemu autoukładu - często po prostu za pomocą Dodaj brakujące ograniczenia) do niego i Dopasowanie wiązania spowoduje dopasowanie wysokości pola tekstowego. Jeśli nie chcesz wiązań, możesz je usunąć (Wyczyść ograniczenia), a pole tekstowe pozostanie na dostosowanej wysokości.
Działa jak marzenie.
UITextField *txt = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[txt setText:@"Ananth"];
[self.view addSubview:txt];
Ostatnie dwa argumenty to szerokość i wysokość, możesz ustawić, jak chcesz ...
Możesz użyć właściwości ramki pola tekstowego, aby zmienić ramkę Like-Textfield.frame = CGRECTMake (oś x, oś y, szerokość, wysokość)
To całkiem proste.
yourtextfield.frame = CGRectMake (yourXAxis, yourYAxis, yourWidth, yourHeight);
Zadeklaruj swoje pole tekstowe jako właściwość gloabal i zmień jego ramkę, gdziekolwiek chcesz, w swoim kodzie.
Miłego kodowania!
Jeśli tworzysz wiele z UITextFields
nich, szybsze może być utworzenie podklasy UITextView
i zastąpienie metody setFrame za pomocą
-(void)setFrame:(CGRect)frame{
[self setBorderStyle:UITextBorderStyleRoundedRect];
[super setFrame:frame];
[self setBorderStyle:UITextBorderStyleNone];
}
W ten sposób możesz po prostu zadzwonić
[customTextField setFrame:<rect>];