Es posible ajustar la posición x,y de la titleLabel de un UIButton?

Aquí está mi código:

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [btn setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
    [btn setTitle:[NSString stringWithFormat:@"Button %d", i+1] forState:UIControlStateNormal];     
    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    btn.titleLabel.frame = ???
InformationsquelleAutor RAGOpoR | 2010-05-11

4 Comentarios

  1. 438
    //make the buttons content appear in the top-left
    [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
    [button setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];
    
    //move text 10 pixels down and right
    [button setTitleEdgeInsets:UIEdgeInsetsMake(10.0f, 10.0f, 0.0f, 0.0f)];

    Y en Swift

    //make the buttons content appear in the top-left
    button.contentHorizontalAlignment = .Left
    button.contentVerticalAlignment = .Top
    
    //move text 10 pixels down and right
    button.titleEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 0.0, 0.0)
    • esta es definitivamente la mejor respuesta
    • Me pregunto por qué el autor de la pregunta eligió la otra respuesta. Esto es mucho mejor.
    • Ni siquiera necesitaba las dos primeras líneas… setTitleEdgeInsets: era todo lo necesario para desplazar el texto a su alrededor.
    • Este es sin duda correcto, pero probablemente más fácil de lograr mediante el uso de la interface builder (como se describe en mi respuesta).
    • Las dos primeras líneas de las posiciones de su texto para el 0,0 (x,y). Esto puede evitar que la posición relativa; especialmente si se establece la alineación predeterminada en el xib.
    • yo assgin el título del botón de los servicios web y assgin la imagen de fondo del botón. algunas veces la web serivies valores son más de 10 carta. en este caso se muestran línea punteada. necesito si web serivies valores en el aumento de la imagen del botón también quieren el aumento de … cómo hacer?
    • mi app ahora 2x más rápido hhhhh
    • las 2 primeras líneas se ven en la imagen si el botón de la altura es mayor y lo que necesita para alinear como ltr… para los botones normales, sí son inútiles…

  2. 39

    El más fácil manera de hacerlo visualmente es usar el atributo inspector** (aparece cuando se edita un xib/storyboard), la creación de la «borde» la propiedad del título, el ajuste de los márgenes, a continuación, ajuste «borde» de la propiedad de la imagen, y ajustar en consecuencia.
    Por lo general es mejor que la codificación , ya que es más fácil de mantener y muy visual.

    Es posible ajustar la posición x,y para titleLabel de UIButton?

    • Buena sugerencia para cambiar Edge a Title y, a continuación, ajuste de margen!
    • Para futura referencia, ya que Xcode 8, en lugar de establecer la edge propiedad puede ajustar el título de inserciones en el Tamaño del Inspector.
  3. 14

    Derivan de UIButton y aplicar el siguiente método:

    - (CGRect)titleRectForContentRect:(CGRect)contentRect;

    Edición:

    @interface PositionTitleButton : UIButton
    @property (nonatomic) CGPoint titleOrigin;
    @end
    
    @implementation PositionTextButton
    - (CGRect)titleRectForContentRect:(CGRect)contentRect {
      contentRect.origin = titleOrigin;
      return contentRect;
    }
    @end
    • ¿me puedes mostrar algún ejemplo, por favor?
    • Gracias, esto es lo que realmente se necesita. Centrado automático no era suficiente.
  4. 2

    Para mis proyectos, he esta extensión de utilidad:

    extension UIButton {
    
        func moveTitle(horizontal hOffset: CGFloat, vertical vOffset: CGFloat) {
            self.titleEdgeInsets.left += hOffset
            self.titleEdgeInsets.top += vOffset
        }
    
    }

Dejar respuesta

Please enter your comment!
Please enter your name here