Chciałbym dodać ikonę / obraz w UITextField. Ikonę / obraz należy pozostawić jako symbol zastępczy.
Próbowałem tego:
var imageView = UIImageView();
var image = UIImage(named: "email.png");
imageView.image = image;
emailField.leftView = imageView;
Dzięki.
emailField.leftView = UIImageView(image: UIImage(named: "search"))
:)@IBDesignable
możemy to zrobić w elegancki sposób, jak w tym przykładzie: stackoverflow.com/a/51841433/8238512Odpowiedzi:
Spróbuj dodać
emailField.leftViewMode = UITextFieldViewMode.Always
(Domyślnie
leftViewMode
jestNever
)Zaktualizowana odpowiedź dla Swift 4
źródło
UITextFieldViewMode.Always
)? Czy masz pojęcie, co to nie zadziałało? (na przykład czy to się skompilowało?)emailTextField
czy to naprawdę się zmienia? Czy jesteś pewien, że obraz tam jest? Na przykład Utwórz inny UIImageView i załadujimage
w tym, aby sprawdzić, czy to działa.imageView1.frame = CGRect(x: 5, y: 0, width: userName.frame.height, height: userName.frame.height) view.addSubview(imageView1)
Sahil ma świetną odpowiedź i chciałem to wziąć i rozszerzyć do @IBDesignable, aby programiści mogli dodawać obrazy do swoich UITextField na Storyboard.
Swift 4.2
Co tu się dzieje?
Ten projekt umożliwia:
Uwagi
Do zaprojektowania w Storyboard
W czasie wykonywania
źródło
Chcę tylko dodać tutaj coś więcej:
Jeśli chcesz dodać obraz
UITextField
po lewej stronie, użyjleftView
właściwościUITextField
UWAGA: Nie zapomnij ustawić
leftViewMode
na,UITextFieldViewMode.Always
a praworightViewMode
doUITextFieldViewMode.Always and
wartości domyślnej toUITextFieldViewModeNever
np
Aby dodać obraz po lewej stronie
Aby dodać obraz po prawej stronie
UWAGA: na kilka rzeczy należy zwrócić uwagę podczas dodawania obrazu po
UITextField
lewej lub prawej stronie.Nie zapomnij podać ramki,
ImageView
którą zamierzasz dodaćUITextField
let imageView = UIImageView (ramka: CGRect (x: 0, y: 0, szerokość: 20, wysokość: 20))
jeśli tło twojego obrazu jest białe, obraz nie będzie widoczny
UITextField
jeśli chcesz dodać obraz do określonej pozycji, musisz dodać go
ImageView
jako podwidokUITextField
.Aktualizacja dla Swift 3.0
@Mark Moeykens Pięknie go rozbudował i uczynił z @IBDesignable .
Zmodyfikowałem i dodałem więcej funkcji (dodaj dolną linię i wypełnienie dla prawego obrazu) w tym.
UWAGA, jeśli chcesz dodać obraz po prawej stronie, możesz wybrać
Force Right-to-Left
opcję wsemantic
konstruktorze interfejsu (ale dla prawego dopełnienia obrazu nie będzie działać, dopóki nie zastąpisz metody rightViewRect).Zmodyfikowałem to i mogę pobrać źródło stąd ImageTextField
źródło
Inny sposób, zainspirowany wcześniejszymi postami, aby zrobić rozszerzenie.
Obraz możemy umieścić po prawej lub po lewej stronie
Posługiwać się :
Cieszyć się :)
źródło
Aby utworzyć dopełnienie, lubię umieścić obraz w widoku kontenera. Możesz usunąć kolor tła, gdy będziesz zadowolony z umieszczenia ikony.
źródło
dla Swift 3.0 dodaj obraz po lewej stronie textField
źródło
Szybki 5
Stworzyłem rozszerzenie
Wynik
źródło
2020 - rozsądne rozwiązanie
Odnośnie tego szaleństwa Apple.
Oto prawdopodobnie „najbardziej przejrzysty” i najprostszy sposób na zrobienie tego:
Najpierw musisz poprawnie przenieść tekst.
Zwróć uwagę na tę krytyczną kontrolę jakości: https://stackoverflow.com/a/27066764/294884
Kontynuując, musimy teraz zrobić i przesunąć lewy obraz:
Wydaje się, że jest to najbardziej przejrzysty i niezawodny sposób, aby to zrobić.
źródło
Stworzyłem prosty IBDesignable. Używaj go tak, jak lubisz. Po prostu upewnij się, że UITextField potwierdza tę klasę.
źródło
Inny sposób na ustawienie symbolu zastępczego i wypełnienie pola tekstowego.
źródło
Swift 3.1
źródło
Możesz umieścić tę funkcję w pliku globalnym lub nad klasą, aby mieć do niej dostęp w całej aplikacji. Po tej procedurze możesz wywołać tę funkcję zgodnie z wymaganiami aplikacji.
źródło
Dlaczego nie wybierzesz najłatwiejszego podejścia. W większości przypadków chcesz dodać ikony takie jak niesamowite czcionki ... Po prostu użyj niesamowitej biblioteki czcionek i byłoby tak łatwo dodać ikonę do pola tekstowego, jak to:
Najpierw musisz zainstalować tę szybką bibliotekę: https://github.com/Vaberer/Font-Awesome-Swift
źródło
To jest zmodyfikowana wersja odpowiedzi Marka Moeykensa z dodanym wypełnieniem między obrazem a tekstem oraz regulowanym rozmiarem obrazu na wypadek, gdyby ktoś tego potrzebował.
Szybki 4
źródło
Szybki 5
Podobny do @Markus, ale w Swift 5 :
źródło
SwiftUI
Wyniki
źródło
Korzystając z rozszerzenia w Swift4, możemy łatwo umieścić obraz po prawej lub lewej stronie z dopełnieniem do TextField.
Użyj kodu jak przy ustawieniach obrazu po lewej stronie: -
Wynik :)
źródło