swift xcode uibutton padding imageedgeinsets

swift - ¿Cómo agregar relleno a la izquierda en un UIButton creado mediante programación?



xcode padding (6)

titleEdgeInsets Los márgenes de inserción o inicio de los bordes del rectángulo de dibujo del título del botón.

@property (nonatomic) UIEdgeInsets titleEdgeInsets

Discusión Use esta propiedad para cambiar el tamaño y la posición del rectángulo de dibujo efectivo para el título del botón. Puede especificar un valor diferente para cada una de las cuatro inserciones (superior, izquierda, inferior, derecha). Un valor positivo reduce, o inserta, ese borde, moviéndolo más cerca del centro del botón. Un valor negativo expande, o supera, esa ventaja. Use la función UIEdgeInsetsMake para construir un valor para esta propiedad. El valor predeterminado es UIEdgeInsetsZero.

Disponibilidad disponible en iOS 2.0 y versiones posteriores.

Declarado en UIButton.h

Prueba esto :)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];

Además, si está utilizando un botón personalizado, existe algo así como las inserciones de contenido y las inserciones de imagen.

En caso de que lo hayas hecho buscando a Swift. Esto es válido Swift 3.0 😃

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)

Puedes configurarlo directamente también. Es útil si desea utilizar una o dos propiedades.

myButton.titleEdgeInsets.top = 0 myButton.titleEdgeInsets.left = 5 myButton.titleEdgeInsets.bottom = 0 myButton.titleEdgeInsets.right = 0

Estoy teniendo problemas para agregar el relleno izquierdo en un UIButton . Tengo un UIButton con UIControlContentHorizontalAlignmentLeft . Quiero que el texto se muestre en el lado izquierdo pero es demasiado a la izquierda. Cuando doy la frontera, no se ve bien. Me gustaría dar algo de relleno en el texto sobre 5px como en CSS. Busqué en Google la solución pero no puedo encontrar una en particular para UIButton . Gracias de antemano por la ayuda.


Aquí hay otro ejemplo de cómo resolver esto:

[self.myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; float padding_button = 6.0f; UIEdgeInsets titleInsets = UIEdgeInsetsMake(0.0f, padding_button, 0.0f, -padding_button); UIEdgeInsets contentInsets = UIEdgeInsetsMake(padding_button, 0.0f, padding_button, 0.0f); CGFloat extraWidthRequiredForTitle = titleInsets.left - titleInsets.right; contentInsets.right += extraWidthRequiredForTitle; [self.myButton setTitleEdgeInsets:titleInsets]; [self.myButton setContentEdgeInsets:contentInsets]; [self.myButton sizeToFit];

Además, si su botón tiene una imagen, simplemente puede agregar:

[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];

¡Buena suerte!


Aquí hay una mejor respuesta a:

  • Evita truncar el título del botón.
  • evitar que el título se extienda más allá de la vista del botón
  • Haz que el marco del botón funcione bien con una imagen.

Código:

// Obj-C CGFloat padding = 10.0f; [myButton setTitleEdgeInsets:UIEdgeInsetsMake(0, padding, 0, -padding)]; [myButton setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, padding)]; // Swift let padding: CGFloat = 10.0 myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding) myButton.contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)


En Xcode 6 puede especificar la inserción de título en IB:


Publique Xcode 8 si desea configurar estas inserciones a través del constructor de interfaces (IB), encontrará estas configuraciones de inserciones en inspector de tamaño en lugar de inspector de atributos.

Espero que esto ayude.


_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; _myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);