Comment append de l'espace au début de UITextField

Je crée une application qui contient plusieurs UITextField. Dans textField, j'ai défini le type de bordure à none et l'image d'arrière-plan. Il affiche bien, Mais maintenant mon text est commencé à partir de la frontière de peur qui ne semble pas bon, comme ça

entrez la description de l'image ici

Comment puis-je append de l'espace au début du champ de text?

Essaye ça

UILabel * leftView = [[UILabel alloc] initWithFrame:CGRectMake(10,0,7,26)]; leftView.backgroundColor = [UIColor clearColor]; textField.leftView = leftView; textField.leftViewMode = UITextFieldViewModeAlways; textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

Vous devriez sous-classr UITextField et replace la fonction drawText.

vérifiez cela pour get de l'aide OU Vous pouvez faire ce qui suit:

 UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, height_of_textfiled)]; textField.leftView = paddingView; textField.leftViewMode = UITextFieldViewModeAlways; 

Voici la réponse de Kalpesh dans Swift 3.x :

 let leftView: UILabel = UILabel(frame: CGRectMake(10, 0.0, 7, 26)) leftView.backgroundColor = UIColor.clearColor() customField.leftView = leftView customField.leftViewMode = .Always customField.contentVerticalAlignment = .Center 

Swift 4.x

 let leftView: UILabel = UILabel(frame: CGRect(x: 10, y: 0, width: 7, height: 26)) leftView.backgroundColor = UIColor.clearColor() customField.leftView = leftView customField.leftViewMode = .always customField.contentVerticalAlignment = .center 

Vous pouvez sous-classr UITextField et ovverride textRectForBounds et editingRectForBounds. Par exemple,

 - (CGRect)textRectForBounds:(CGRect)bounds { return CGRectMake(bounds.origin.x + 10, bounds.origin.y + 5, bounds.size.width - 20, bounds.size.height - 10); } - (CGRect)editingRectForBounds:(CGRect)bounds { return CGRectMake(bounds.origin.x + 10, bounds.origin.y + 5, bounds.size.width - 20, bounds.size.height - 10); } 

Objectif c

Pour remplir uniquement un espace réservé, ce code fonctionnera

 usernameTF.atsortingbutedPlaceholder = [[NSAtsortingbutedSsortingng alloc] initWithSsortingng:@" Your text"]; 

Pour remplir à la fois l'espace réservé et le text du UITextField, le code ci-dessous fonctionnera

 usernameTF.layer.sublayerTransform = CATransform3DMakeTranslation(40, 0, 30); 

Swift 3.0

Pour remplir uniquement un espace réservé, ce code fonctionnera

 yourTextField.atsortingbutedPlaceholder = NSAtsortingbutedSsortingng(ssortingng: " YourText") 

Pour remplir à la fois l'espace réservé et le text du UITextField, le code ci-dessous fonctionnera

 usernameTF.layer.sublayerTransform = CATransform3DMakeTranslation(40, 0, 30) 
 -(void)textField:(UITextField *) textField didBeginEditing { if ([textField.text isEqualToSsortingng:@""] || textField.text == NULL) { textField.text = @" "; } } 

Vous pouvez placer l'image d'arrière-plan du champ de text dans une vue d'image, au-dessus de l'image, placez votre champ de text à gauche.