¿Cómo get relleno izquierdo en UITextField leftView?

Estoy configurando un UIImageView como leftView en un UITextField así:

 UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.height*.1, self.height*.1)]; envelopeView.image = [UIImage imageNamed:@"envelope.png"]; envelopeView.contentMode = UIViewContentModeScaleAspectFit; envelopeView.bounds = CGRectInset(envelopeView.frame, 15, 10); self.emailAddress.leftView = envelopeView; self.emailAddress.leftViewMode = UITextFieldViewModeAlways; 

que me lleva a lo siguiente:

Imagen de UITextField

Como puede ver, el tamaño izquierdo de la image va hasta el borde izquierdo del button, aunque intenté establecer un recuadro. ¿Cómo puedo mover este sobre para que tenga relleno por todos lados?


Actualización: probé la respuesta propuesta de cambiar el marco de UIImageView como tal, pero el sobre todavía está alineado en el lado izquierdo en el borde del UITextField :

 CGFloat padding = 20; UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(3*padding, padding, self.height*.1-padding, self.height*.1-padding)]; 

introduzca la descripción de la imagen aquí puedes simplemente intentar esto:

  UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 0, 30, 30)]; envelopeView.image = [UIImage imageNamed:@"comment-128.png"]; envelopeView.contentMode = UIViewContentModeScaleAspectFit; UIView *test= [[UIView alloc]initWithFrame:CGRectMake(20, 0, 30, 30)]; [test addSubview:envelopeView]; [self.textField.leftView setFrame:envelopeView.frame]; self.textField.leftView =test; self.textField.leftViewMode = UITextFieldViewModeAlways; 

Para usuarios de Swift 3

Esto es lo que funcionó para mí:

 extension UITextField { /// set icon of 20x20 with left padding of 8px func setLeftIcon(_ icon: UIImage) { let padding = 8 let size = 20 let outerView = UIView(frame: CGRect(x: 0, y: 0, width: size+padding, height: size) ) let iconView = UIImageView(frame: CGRect(x: padding, y: 0, width: size, height: size)) iconView.image = icon outerView.addSubview(iconView) leftView = outerView leftViewMode = .always } } 

testing:

 txOrigin.setLeftIcon(icon_location) 

resultado:

introduzca la descripción de la imagen aquí

Puedes usar esto. Cambia tu marco según tu necesidad.

 NSTextAttachment* placeholderImageTextAttachment = [[NSTextAttachment alloc] init]; placeholderImageTextAttachment.image = [UIImage imageNamed:@"Search"]; placeholderImageTextAttachment.bounds = CGRectMake(0, -2, 16, 16); NSMutableAttributedString* placeholderImageString = [[NSAttributedString attributedStringWithAttachment:placeholderImageTextAttachment] mutableCopy]; NSMutableAttributedString* placeholderString = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@" Search", nil)]; [placeholderImageString appendAttributedString:placeholderString]; _txtFieldSearch.attributedPlaceholder = placeholderImageString; _txtFieldSearch.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;