Quiero poner el margen izquierdo de un UITextField
de texto a 10 px. ¿Cuál es la mejor manera de hacer eso?Agregar margen izquierdo a UITextField
Respuesta
Como ya he explicado en un comentario anterior, la mejor solución en este caso es extender la clase UITextField en lugar de utilizar una categoría, por lo que puede utilizar explícitamente en los campos de texto deseados.
#import <UIKit/UIKit.h>
@interface MYTextField : UITextField
@end
@implementation MYTextField
- (CGRect)textRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
- (CGRect)editingRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
@end
Una categoría está destinada a agregar nuevas funciones a una clase existente, no para anular un método existente.
he llegado casi anulando - (CGRect)textRectForBounds:(CGRect)bounds
. Ahora problema es cuando va en TextField al modo su izquierda reinicio margen de cero a editar .......
@implementation UITextField(UITextFieldCatagory)
- (CGRect)textRectForBounds:(CGRect)bounds {
CGRect theRect=CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-10, bounds.size.height);
return theRect;
}
hola necesito una solución ??? – iOSPawan
¿Por qué no bounds.origin.y - 20? –
Puede probar este
TextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
TextField.textAlignment = UITextAlignmentCenter;
quiero el margen izquierdo a 10 Px – iOSPawan
Puede hacerlo mediante la extensión de clase y UITextField
imperiosas dos métodos:
- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)editingRectForBounds:(CGRect)bounds;
Aquí está el código:
la interfaz en MYTextField.h
@interface MYTextField : UITextField
@end
su implementación en MYTextField.m
@implementation MYTextField
static CGFloat leftMargin = 28;
- (CGRect)textRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
- (CGRect)editingRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
@end
Gracias funcionó para mí ... Pero tengo un problema, que lo usa para todos los campos de texto en mi aplicación. Quiero que esté en el campo de texto de controladores de vista en particular. ¿Puede usted ayúdame en eso. – Sabby
Es el comportamiento esperado de las categorías, no es la solución en este caso. Debe extender UITextField y anular los mismos métodos. Entonces, use la solución @clopez. – TwiterZX
En primer lugar, voté en sentido ascendente, pero luego descendí. Si agrega 10 px para el origen, debe restar _20_ px del ancho para mantener el mismo margen a la izquierda y a la derecha. Además de los métodos de anulación a través de una categoría es realmente una mala idea amigo, como ya se mencionó anteriormente. –
UITextField * textField = [[UITextField alloc]init];
[textField setDelegate:self];
[textField setFrame:CGRectMake(170,112,140,25)];
[textField setBorderStyle:UITextBorderStyleNone];
[textField setBackgroundColor:[UIColor clearColor]];
[self.View addSubview:noofChildTField];
UIView *paddingView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)] autorelease];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
probar este código
¡genial! ¡gracias! simplemente modifique CGRectMake 5 a un valor mucho mayor si necesitamos un margen más grande. –
Tenía la esperanza de ver un escenario en el IB en el inspector de propiedades para ajustar este valor. Resultó que había establecido el estilo de alineación y borde sin darse cuenta a los valores que se mezclaron con el relleno de la izquierda.
No creo que sería un gran problema elegir justificar a la izquierda y sin borde, pero hace que las palabras se solapen o lleguen al borde de la caja y no se vean bien.
malo:
bueno:
arreglaron hasta para mí. Espero que esto ayude a alguien más también.
+1 para darse cuenta de que 'UITextBorderStyleRoundedRect' agrega un bonito margen izquierdo al TextField, mientras que' UITextBorderStyleNone' más su propio borde (ángulo recto) coloca el texto justo en el borde. – pkamb
Para Swift 3:
Hacer una salida de la UITextField
, dicen usernameTextField. A continuación, escriba el siguiente código en viewDidLoad()
let paddingView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
usernameTextField.leftView = paddingView
usernameTextField.leftViewMode = .always
Cambiar el width: 5
a un valor mayor si se requiere más espacio.
Esto es mucho mejor que crear subclases ... :) – chrisoneiota
- 1. Agregar etiqueta a UITextField
- 2. Agregar margen a DataGridTextColumn
- 3. cómo cambiar el margen izquierdo en gvim
- 4. Diferencia entre "margen izquierdo" e "izquierdo" (o "margen-derecho" y "derecho")
- 5. Imprimir con margen izquierdo con espacios
- 6. Agregar botón izquierdo a UINavigationBar (iPhone)
- 7. Cómo agregar UILongPressGestureRecognizer a un UITextField?
- 8. Text.PrettyPrint: sangría de inicio desde el margen izquierdo
- 9. Establecer margen izquierdo para un párrafo en html
- 10. cambio WPF margen izquierdo del cuadro de texto
- 11. Agregar UITextField en UIView programmatically
- 12. Agregar el botón "Borrar" a un iPhone UITextField
- 13. ¿Cómo agregar margen a un botón en tiempo de ejecución?
- 14. Agregar un botón cancelar al teclado UITextField
- 15. Añadir UITextField a UIToolbar
- 16. GtkTextView margen superior/inferior?
- 17. cómo reducir/eliminar el margen izquierdo/derecho en un UITableView agrupado?
- 18. Relleno izquierdo/derecho para Button.setCompoundDrawablesWithIntrinsicBounds()?
- 19. Usando un DataTrigger para cambiar Solo el margen izquierdo o derecho (o ambos)
- 20. Emacs: el indicador TODO en el margen izquierdo tiene un extraño efecto secundario: borrar caracteres
- 21. ¿Agregar margen entre un RadioButton y su etiqueta en Android?
- 22. ¿Cómo establecer un margen en UITextView?
- 23. cómo agregar una acción en la tecla de retorno UITextField?
- 24. Posición de fondo CSS arriba derecha ¿agregar un margen?
- 25. agregar imágenes a UItableView
- 26. botón Android con márgenes izquierdo y derecho
- 27. texto de margen en TextBlock
- 28. Eventos UiTextField
- 29. ¿Cómo acceder a los valores de rango de Gnuplot (automático) y modificarlos para agregar un margen?
- 30. UITextField focus
Una pregunta. ¿Cómo puedo usar esta nueva clase extendida de Storyboard o Interface Builder? Muchas gracias. – Ricardo
Hola Ricardo, debes seleccionar el elemento en Storyboard o Interface Builder y editar la clase personalizada en Identity Inspector. http://grrrab.it/5rr3xy – clopez
Gracias clopez, ¡funciona perfectamente ahora! :) – Ricardo