Créer un espace au début d'un UITextField
Je veux laisser un peu d'espace au début d'un UITextField, comme ici:
Ajouter à gauche de la marge pour objet UITextField
Mais je ne sais pas comment le faire avec Swift.
- eh bien, vous ne pouvez pas sous-classe swift objets en Objective-C, mais vous pouvez le faire dans l'autre sens... je pense que vous il vous suffit d'ajuster la réponse et de le combiner avec: developer.apple.com/library/prerelease/ios/documentation/Swift/...
- Ce n'est probablement pas la meilleure solution, mais vous pourriez faire une uiview *paddingView et ne
UITextField.leftView = paddingView
. afin de lui donner le rembourrage en vue de votre largeur désirée. - le rembourrage de vue serait juste un à la vanille UIView qui a la largeur que vous souhaitez
Vous devez vous connecter pour publier un commentaire.
C'est ce que j'utilise en ce moment:
Swift 4.2
Swift 4
Swift 3:
Je n'ai jamais mis un autre rembourrage, mais vous pouvez modifier. Cette classe ne prend pas soin de la rightView et leftView sur le champ. Si vous souhaitez que à manipuler correctement, vous pouvez utiliser quelque chose comme (exemple en objc et j'ai seulement besoin de la rightView:
newBounds
méthode avec leUIEdgeInsetsInsetRect
fonction. Au lieu dereturn self.newBounds(bounds)
vous pouvez utiliserreturn UIEdgeInsetsInsetRect(bounds, padding)
et retirer lenewBounds
méthode.Si vous utilisez une extension, il n'est pas nécessaire à la sous-classe UITextField et la nouvelle fonctionnalité sera disponible pour tout objet UITextField dans votre application:
Quand j'en ai besoin pour définir le remplissage d'un champ de texte n'importe où dans mon application, je n'ai tout simplement la suivante:
L'utilisation de Swift extensions, la fonctionnalité est ajoutée à l'objet UITextField directement sans sous-classement.
Espérons que cette aide!
X, Y , Z sont les valeurs souhaitées
Une telle marge ne peut être atteint par la création de
leftView
/rightView
àUITextField
.Mis À Jour Pour Swift 4
J'ai juste ajouté/a placé une
UIView
à gauche et à droite de la zone de texte. Alors maintenant, la saisie commence après la vue.Grâce
Espère que cela a aidé...
Swift 4, Xcode 9
J'aime Pheepster réponse, mais comment nous le faisons tous à partir de l'extension, sans nécessiter de VC du code ou de tout sous-classement:
rightView?.frame.size.width ?? 0
paddingLeft
àpaddingLeftCustom
et l'autre aussi. Si je n'ai pas fait cela, un bug qui m'a suivi deux semaines serait apparu quand vous étiez à l'aide de points de Vue qui ont une UITextView (comme UISearchBar). Juste... ne définissez pas les noms par défaut.dans Swift Xcode 4.2 et 10
Au départ, mon champ de texte est comme ça.
Après l'ajout de rembourrage dans la partie gauche de mon champ de texte est...
Comme cela, nous pouvons créer droite aussi.(textFieldName.rightViewMode = .toujours)
Si vous voulez SharedInstance le code de type(Écrire une fois utiliser chaque ware) voir le code ci-dessous.
Maintenant appeler cette fonction comme ceci.
Simple swift 3 solution - ajouter du code à viewDidLoad:
Pas besoin de ridiculement long code
Pour créer un rembourrage vue pour objet UITextField dans Swift 5
Sous-classement UITextField est le chemin à parcourir. Ouvrir une aire de jeux et ajoutez le code suivant:
Ici est Haagenti réponse mis à jour à Swift 4.2:
Référence: La Mise À Niveau Vers Swift 4.2.
Modifier: Compte pour le bouton effacer.
Créer UIView nécessaire à un remplissage de l'espace et de l'ajouter à textfield.leftView membre et créer textfield.leftViewMode membre de UITextFieldViewMode.Toujours
Mettez ce code dans votre
viewDidLoad()
:Ça fonctionne pour moi 🙂
Épouvantail de réponse rapide 3
Dans Swift 3.
Vous pouvez utiliser des UITextField avec l'indentation qui est défini dans son constructeur. N'avez pas besoin d'un surplus de déclaration dans un contrôleur.
Façon très simple: pour ce faire, par l'extension UITextField
Alors vous pouvez définir un rembourrage pour n'importe quel bord de cette façon:
Une ligne de code qui m'a sauvé:
Pour Xamarin.iOS:
Pour Swift:
Je préfère utiliser
IBDesignable
classe etIBInspectable
propriétés pour me permettre de définir le rembourrage via Xcode story-boards et de le garder réutilisables. J'ai aussi mis à jour le code de Swift 4.* L'extension de UITextField dans Swift 5 *