wake-up-neo.net

Festlegen eines Bildes für einen UIButton im Code

Wie setzt man das Bild für einen UIButton im Code?

Ich habe das:

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

aber nicht sehen, was das Bild dafür einstellen wird.

193
Spanky

Ziel c

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

Schnell 4

let btnImage = UIImage(named: "image")
btnTwo.setImage(btnImage , for: UIControlState.normal)
387
Mike W

Mikes Lösung zeigt nur das Bild, aber ein auf der Schaltfläche festgelegter Titel ist nicht sichtbar, da Sie entweder den Titel oder das Bild festlegen können.

Wenn Sie beide festlegen möchten (Ihr Bild und Titel), verwenden Sie den folgenden Code:

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

Bevor dies für mich funktionieren würde, musste ich die Größe des Schaltflächenrahmens explizit basierend auf der Bildrahmengröße ändern.

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;
21
jrasmusson

Im Falle von Swift User

// 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) 
10
Sruit A.Suk
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];
9
Gaurav Gilani

Sie können es so machen

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

Sie können das Bild auf eine der folgenden Arten einfügen:

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];
8
Ajay Sharma

Swift 3 Version (butt_img muss ein Image Set in Assets.xcassets oder Images.xcassets Ordner in Xcode sein):

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

Wie auch immer, wenn Sie möchten, dass das Bild so skaliert wird, dass es die Größe der Schaltfläche ausfüllt, können Sie ein UIImageView darüber hinzufügen und es Ihrem Bild zuweisen:

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

Ich suchte nach einer Lösung, um meinem UIImage ein UIButton hinzuzufügen. Das Problem war nur, dass das Bild größer als nötig angezeigt wurde. Hat mir nur geholfen:

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

Jedes Mal, wenn ich mein UIImageView anzeigen möchte, setze ich das var hidden auf YES oder NO. Es könnte andere Lösungen geben, aber ich wurde so oft mit diesen Dingen verwechselt und dies löste es und ich musste mich nicht mit internen Dingen befassen, die UIButton im Hintergrund macht.

2
Alex Cio
-(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....
    }
}
2
Leemboy

Machen Sie sich nicht so viele Sorgen, wenn Sie den Button aus dem Code rahmen, das können Sie im Storyboard tun. Das hat bei mir funktioniert, eine Zeile ... einfacher.

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