Chcę zostawić trochę miejsca na początku UITextField, tak jak tutaj: Dodaj lewy margines do UITextField
Ale nie wiem, jak to zrobić z Szybkim.
ios
swift
cocoa-touch
uitextfield
LinusGeffarth
źródło
źródło
UITextField.leftView = paddingView
. więc nadaj wyściółce żądaną szerokość.Odpowiedzi:
Oto, czego teraz używam:
Swift 4.2
Szybki 4
Swift 3:
Nigdy nie ustawiłem innej wyściółki, ale możesz dostosować. Ta klasa nie zajmuje się rightView i leftView w polu tekstowym. Jeśli chcesz, aby było to obsługiwane poprawnie, możesz użyć czegoś takiego (przykład w objc i potrzebowałem tylko rightView:
źródło
newBounds
metody zUIEdgeInsetsInsetRect
funkcją. Zamiastreturn self.newBounds(bounds)
ciebie możesz użyćreturn UIEdgeInsetsInsetRect(bounds, padding)
i usunąćnewBounds
metodę.Jeśli używasz rozszerzenia, nie ma potrzeby tworzenia podklasy UITextField, a nowa funkcjonalność zostanie udostępniona każdemu UITextField w Twojej aplikacji:
Kiedy muszę ustawić wypełnienie pola tekstowego w dowolnym miejscu w mojej aplikacji, po prostu wykonuję następujące czynności:
Korzystając z rozszerzeń Swift, funkcjonalność jest dodawana bezpośrednio do UITextField bez tworzenia podklas.
Mam nadzieję że to pomoże!
źródło
X, Y, Z to pożądane wartości
źródło
Taki margines można osiągnąć ustawiając
leftView
/rightView
naUITextField
.Zaktualizowano dla Swift 4
Właśnie dodałem / umieściłem
UIView
po lewej i prawej stronie pola tekstowego. Więc teraz pisanie rozpocznie się po wyświetleniu.Dzięki
Mam nadzieję, że to pomogło ...
źródło
Swift 4, Xcode 9
Podoba mi się odpowiedź Pheepstera , ale co powiesz na to, że zrobimy to wszystko z poziomu rozszerzenia, bez konieczności stosowania kodu VC lub jakiejkolwiek podklasy:
źródło
rightView?.frame.size.width ?? 0
paddingLeft
dopaddingLeftCustom
i tę drugą. Gdybym tego nie zrobił, pojawiłby się błąd, który pojawił się po dwóch tygodniach, podczas korzystania z widoków, które mają UITextView (np. UISearchBar). Po prostu ... nie ustawiaj domyślnych nazw.w Swift 4.2 i Xcode 10
Początkowo moje pole tekstowe wygląda tak.
Po dodaniu dopełnienia po lewej stronie moje pole tekstowe jest ...
W ten sposób możemy również utworzyć prawą stronę. (TextFieldName.rightViewMode = .always)
Jeśli chcesz kod typu SharedInstance (napisz raz użyj każdego towaru) zobacz poniższy kod.
Teraz wywołaj tę funkcję w ten sposób.
źródło
Proste rozwiązanie Swift 3 - dodaj kod do viewDidLoad:
Nie ma potrzeby tworzenia śmiesznie długiego kodu
źródło
Przetestuj moje rozszerzenie Swift 5:
Jak używać
źródło
Aby utworzyć widok wypełnienia dla UITextField w języku Swift 5
źródło
Podklasa UITextField jest drogą do zrobienia. Otwórz plac zabaw i dodaj następujący kod:
źródło
Oto odpowiedź Haagenti zaktualizowana do wersji Swift 4.2:
Odniesienie: Aktualizacja do Swift 4.2 .
Edytuj : Konto dla przycisku czyszczenia.
źródło
Utwórz UIView z wymaganą spacją dopełnienia i dodaj go do elementu członkowskiego textfield.leftView i ustaw element członkowski textfield.leftViewMode na UITextFieldViewMode.
źródło
Umieść ten kod w swoim
viewDidLoad()
:Mi to pasuje :)
źródło
Uratowała mnie ta jedna linijka kodu:
W przypadku platformy Xamarin.iOS:
Dla Swift:
źródło
Odpowiedź ScareCrow w Swift 3
źródło
W Swift 3. Możesz używać własnego UITextField z wcięciem ustawionym w jego konstruktorze. Nie potrzeba dodatkowej deklaracji w kontrolerze.
źródło
Prosty sposób: aby to zrobić, rozszerzając UITextField
Następnie możesz ustawić dopełnienie do dowolnej krawędzi w ten sposób:
źródło
Wolę używać
IBDesignable
klasy iIBInspectable
właściwości, aby umożliwić mi ustawienie dopełnienia za pomocą scenorysów Xcode i zachować możliwość ponownego użycia. Zaktualizowałem również kod do pracy w Swift 4.źródło
* Rozszerzenie UITextField w Swift 5 *
źródło
źródło