ios click - Impostazione di un'immagine per un UIButton nel codice




swift programmatically (10)

Non preoccuparti di inquadrare il pulsante dal codice, puoi farlo sullo storyboard. Questo ha funzionato per me, una riga ... più semplice.

[self.button setBackgroundImage:[UIImage imageNamed: @"yourPic.png"] forState:UIControlStateNormal];

Come si imposta l'immagine per un UIButton in codice?

Ho questo:

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];

ma non vedere cosa imposterà l'immagine per esso.


Puoi farlo in questo modo

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

In caso di utente 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) 

Stavo cercando una soluzione per aggiungere un UIImage al mio UIButton . Il problema era che mostra l'immagine più grande del necessario. Mi hai solo aiutato con questo:

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

Ogni volta che voglio visualizzare la mia UIImageView ho semplicemente impostato la UIImageView hidden su YES o NO . Potrebbero esserci altre soluzioni, ma mi sono confuso così tante volte con questa roba e questo l'ha risolto e non ho avuto bisogno di occuparmi di roba interna che UIButton sta facendo in background.


Prima che questo funzionasse per me, ho dovuto ridimensionare la cornice del pulsante esplicitamente in base alla dimensione del fotogramma dell'immagine.

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;

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)

La soluzione di Mike mostrerà semplicemente l'immagine, ma qualsiasi titolo impostato sul pulsante non sarà visibile, perché puoi impostare il titolo o l'immagine.

Se vuoi impostare entrambi (la tua immagine e il titolo) usa il seguente codice:

btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setBackgroundImage:btnImage forState:UIControlStateNormal];
[btnTwo setTitle:@"Title" forState:UIControlStateNormal];

Versione Swift 3 (butt_img deve essere un set di immagini nella cartella Assets.xcassets o Images.xcassets in Xcode):

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

Ad ogni modo, se vuoi che l'immagine sia ridimensionata per riempire le dimensioni del pulsante, puoi aggiungere una UIImageView su di essa e assegnarla all'immagine:

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

-(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....
    }
}

Imposta il contenutoHorizontalAlignment:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Potresti anche voler regolare il contenuto a sinistra, altrimenti il ​​testo sfiorerà il bordo sinistro:

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);






ios objective-c iphone ipad uibutton