¿Cómo se puede establecer la imagen de un UIButton en el código?

Tengo este:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self action:@selector(goToOne) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnTwo];

pero no veo lo que va a configurar la imagen para ello.

InformationsquelleAutor Spanky | 2009-09-24

11 Comentarios

  1. 385

    Objective-C

    UIImage *btnImage = [UIImage imageNamed:@"image.png"];
    [btnTwo setImage:btnImage forState:UIControlStateNormal];

    Swift 4

    let btnImage = UIImage(named: "image")
    btnTwo.setImage(btnImage , for: UIControlState.normal)
    • Como una nota al margen: esto mostrará la imagen, pero el título del botón de texto se oculta.
    • Este es el código es totalmente funcional, pero me estoy poniendo la imagen con el análisis de cómo es que puedo hacer esto ya que este código se trabajó para mí en UIImage caso:- largePick.imagen = aNewsInfo.smallImageData; ¿cómo puedo hacer esto con UIButton… me Pueden ayudar…
    • ¿de dónde documentación del estado que? Yo no veo que sugieren en cualquier lugar que setImage está en desuso. (A mí me parece que están confundiendo a UIButton.setImage con UITableViewCell.image, que está una propiedad en desuso como se dijo.)
    • Atención: Si utiliza cualquier otra cosa que UIButtonTypeCustom, la imagen será azul en iOS7 y 8.
    • Para Swift 3: btnTwo.setImage(btnImage, para: UIControlState.normal)
    • o más simple aún, la segunda línea en Swift btnTwo.setImage(btnImage, for: .normal)

  2. 57

    Mike solución se acaba de mostrar la imagen, pero cualquier título establecido en el botón no será visible, debido a que puede definir el título o la imagen.

    Si quieres conjunto de ambos (su imagen y título) utilice el siguiente código:

    btnImage = [UIImage imageNamed:@"image.png"];
    [btnTwo setBackgroundImage:btnImage forState:UIControlStateNormal];
    [btnTwo setTitle:@"Title" forState:UIControlStateNormal];
    • ¿cuál es la diferencia entre setImage y setBackgroundImage ?
    • setBackgroundImage se estira la imagen a través de la anchura del botón más de su título de texto mientras setImage hará que el botón una imagen ignorando texto del título, sin estirar la imagen.
  3. 21

    Antes de que esto iba a funcionar para mí, he tenido que cambiar el tamaño del botón marco basado explícitamente en el marco de la imagen tamaño.

    UIImage *listImage = [UIImage imageNamed:@"list_icon.png"];
    UIButton *listButton = [UIButton buttonWithType:UIButtonTypeCustom];
    
    //get the image size and apply it to the button frame
    CGRect listButtonFrame = listButton.frame;
    listButtonFrame.size = listImage.size;
    listButton.frame = listButtonFrame;
    
    [listButton setImage:listImage forState:UIControlStateNormal];
    [listButton addTarget:self.navigationController.parentViewController 
                   action:@selector(revealToggle:) 
         forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton = 
      [[UIBarButtonItem alloc] initWithCustomView:listButton];
    
    self.navigationItem.leftBarButtonItem = jobsButton;
    • Este botón de cambio de tamaño truco es muy útil.
    • sólo quería añadir que las 3 líneas de trasteo con el marco también puede ser escrito en [listButton sizeToFit]
  4. 10

    En el caso de usuarios de Swift

    //case of normal image
    let image1 = UIImage(named: "your_image_file_name_without_extension")!
    button1.setImage(image1, forState: UIControlState.Normal) 
    
    //in case you don't want image to change when "clicked", you can leave code below
    //case of when button is clicked
    let image2 = UIImage(named: "image_clicked")!
    button1.setImage(image2, forState: UIControlState.Highlight) 
  5. 9

    Usted puede hacer esto de esta

    [btnTwo setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
  6. 9
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(0, 0, 150, 44);
    [btn setBackgroundImage:[UIImage imageNamed:@"buttonimage.png"] 
                   forState:UIControlStateNormal];
    [btn addTarget:self 
         action:@selector(btnSendComment_pressed:) 
         forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
  7. 8

    Usted puede poner la imagen en cualquiera de la forma:

    UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btnTwo.frame = CGRectMake(40, 140, 240, 30);
    [btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
    [btnTwo addTarget:self 
               action:@selector(goToOne) 
     forControlEvents:UIControlEventTouchUpInside];
    
    
    [btnTwo setImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal];
    
    //OR setting as background image
    
    [btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"] 
                      forState:UIControlStateNormal];
    
    [self.view addSubview:btnTwo];
    • Esta parte del código que me tiene confundido. <code> btnImage = [UIImage imageNamed:@»de la imagen.png»]; </código de> ¿Qué es btnImage? Que no estaba en el código original. Es que un nuevo botón?
    • puede establecer directamente la imagen del botón en lugar de tomar otro objeto de imagen como esta: [btnTwo setImage:[UIImage imageNamed:@»de la imagen.png»]];
    • usted tiene que tener buttonWithType:UIButtonTypeRoundedRect a UIButtonTypeCustom otros sabios botón no se mostrará como por su propia imagen.
  8. 2

    Yo estaba buscando una solución para agregar un UIImage a mi UIButton. El problema era que sólo se muestra la imagen más grande de lo necesario. Sólo me ayudó con esto:

    _imageViewBackground = [[UIImageView alloc] initWithFrame:rectImageView];
    _imageViewBackground.image = [UIImage imageNamed:@"gradientBackgroundPlain"];
    [self addSubview:_imageViewBackground];
    [self insertSubview:_imageViewBackground belowSubview:self.label];
    _imageViewBackground.hidden = YES;

    Cada vez que quiero mostrar mi UIImageView solo he puesto el var hidden a YES o NO.
    Puede haber otras soluciones, pero me confundí tantas veces con este tema ya esta resuelto y no tenía la necesidad de lidiar con la materia interna UIButton está haciendo en el fondo.

  9. 2

    No te preocupes tanto enmarcar el botón de código, usted puede hacer eso en el guión gráfico. Esto funcionó para mí, una línea de…más simple.

    [self.button setBackgroundImage:[UIImage imageNamed: @"yourPic.png"] forState:UIControlStateNormal];
  10. 2
    -(void)buttonTouched:(id)sender
    {
        UIButton *btn = (UIButton *)sender;
    
        if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-Locked.png"]])
        {
            [btn setImage:[UIImage imageNamed:@"icon-Unlocked.png"] forState:UIControlStateNormal];
            //other statements....
        }
        else
        {
            [btn setImage:[UIImage imageNamed:@"icon-Locked.png"] forState:UIControlStateNormal];
            //other statements....
        }
    }
  11. 2

    Swift 3 versión (butt_img debe ser un Conjunto de Imágenes en Activos.xcassets o Imágenes.xcassets carpeta en Xcode):

    btnTwo.setBackgroundImage(UIImage(named: "butt_img"), for: .normal)
    btnTwo.setTitle("My title", for: .normal)

    De todos modos, si desea que la imagen se amplía para llenar el botón de tamaño, usted puede agregar un UIImageView más y asignarle la imagen:

    let img = UIImageView()
    img.frame = btnTwo.frame
    img.contentMode = .scaleAspectFill
    img.clipsToBounds = true
    img.image = UIImage(named: "butt_img")
    btnTwo.addSubview(img)

Dejar respuesta

Please enter your comment!
Please enter your name here