[ios] Impostazione di un'immagine per un UIButton nel codice



4 Answers

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

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.




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)



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.




Puoi farlo in questo modo

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





Related