Custom UITextField

Jak miałbym stworzyć UITextField taki jak ten na tym obrazku?

Tutaj wpisz opis obrazka

Wydaje się być nieco większy, szczególnie pod względem wysokości.
Author: Bartłomiej Semańczyk, 2011-02-23

6 answers

Prawdopodobnie chcesz użyć background i borderStyle Właściwości UITextField. Ustawienie borderStyle jako UITextBorderStyleNone i utworzenie niestandardowego obrazu tła, który ma być rozciągnięty i użyty jako właściwość background byłoby jednym z podejść.

Proponuję spojrzeć na te właściwości w UITextField class reference.

 20
Author: Ben Cochran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-23 18:12:43

Można to zrobić znacznie lepiej i prościej z rozciągliwym obrazem:

    UIImage *fieldBGImage = [[UIImage imageNamed:@"input.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:20];
    [myUITextField setBackground:fieldBGImage];

Potraktuj tło pola tekstowego jako podzielone na trzy sekcje. Środkowy odcinek, który można rozciągnąć i czapki na końcach. Utwórz obraz, który musi być wystarczająco długi, aby zawierał jeden piksel tej powtarzającej się sekcji( bardzo krótkie pole tekstowe), a następnie utwórz z niego rozciągliwy obraz za pomocą stretchableImageWithLeftCapWidth: topCapHeight. Przekaż szerokość lewej zaślepki do ' leftCapWidth."You can make it stretch również w pionie, ale jeśli obraz tła ma taką samą wysokość jak pole tekstowe, nie będzie to miało efektu.

Jeśli znasz skalowanie 9 plasterków we Flashu lub Illustratorze, to jest to dokładnie to samo pojęcie, z tym, że środkowe sekcje mają tylko jeden piksel szerokości/wysokości.

Zaletą tego jest to, że nie musisz się martwić o skalowanie wielu warstw obiektów razem i możesz zmienić rozmiar pól tekstowych w dowolnym momencie, a tło pozostanie w takcie. Działa na innych elementach też!

 30
Author: Anthony Mattox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-13 01:47:51

Możesz to zrobić przez:

yourTextField.borderStyle = UITextBorderStyleNone;

yourTextField.background = [UIImage imageNamed:@"email-input.png"];

I jeśli chcesz dodać margines do tekstu wewnątrz pola tekstowego, możesz to zrobić poprzez:

// Setting Text Field Margins to display the user entered text Properly

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];

yourTextField.leftView = paddingView;
yourTextField.leftViewMode = UITextFieldViewModeAlways;
 17
Author: Jamal Zafar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-04 08:40:31

Można to również zrobić poprzez Interface Builder.

Poprzez Interface Builder

 7
Author: skwashua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-10 14:11:36

Wystarczy użyć poniższej linii i powinno działać

Textfield_name.background = [UIImage imageNamed: @ " yourImage.png"];

Tutaj "ty" jest obrazkiem tła, który chcesz ustawić...

Jednak będzie to działać tylko wtedy, gdy twój przycisk nie jest okrągły button.So, możesz zmienić typ przycisku w Kreatorze interfejsów lub możesz użyć

Textfield_name.borderstyle = UITextBorderStyleNone or UITextBorderStyleBezel

I TY R gud2go....!

 2
Author: mayuur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-23 18:27:34

Weź uiimageview ustaw jego właściwość image na obraz, który chcesz jako tło uitextfield. A na szczycie tego interfejsu uimageview umieścić uitextfield z borderstyle none. Można to zrobić bezpośrednio w interface builder.

 2
Author: user574089,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-16 07:05:11