कोड में एक UIButton के लिए एक छवि सेट करना


197

आप कोड में UIButton के लिए छवि कैसे सेट करते हैं?

मेरे पास यह है:

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

लेकिन यह नहीं देखें कि इसके लिए छवि क्या सेट करेगी।

जवाबों:


400

उद्देश्य सी

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

स्विफ्ट 5.1

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

1
एक विचार के रूप में: यह छवि दिखाएगा, लेकिन बटन शीर्षक पाठ छिपा होगा।
लेविथान

यह कोड पूरी तरह से काम कर रहा है, लेकिन मैं पार्सिंग के साथ छवि प्राप्त कर रहा हूं, इसलिए मैं यह कैसे कर सकता हूं क्योंकि यह कोड मेरे लिए UIImage मामले में काम किया गया है: - bigPick.image = aNewsInfo.smallImageData; मैं UIButton के साथ यह कैसे कर सकता हूं ... क्या आप मेरी मदद कर सकते हैं ...
user755278

1
@slcott, प्रलेखन राज्य कहाँ है ? मुझे नहीं लगता कि यह कहीं भी सुझाव है कि setImageपदावनत किया गया है। (यह मेरे लिए लगता है कि आप भ्रमित कर रहे हैं UIButton.setImageके साथ UITableViewCell.imageहै, जो है एक संपत्ति पदावनत के रूप में आप ने कहा।)
किर्क Woll

12
ध्यान दें: यदि आप UIButtonTypeCustom के अलावा किसी और चीज़ का उपयोग करते हैं, तो छवि iOS7 और 8. में नीला हो जाएगा
Apfelsaft

2
स्विफ्ट 3 के लिए: btnTwo.setImage (btnImage, इसके लिए: UIControlState.normal)
मीका मोंटोया

57

माइक का समाधान सिर्फ छवि दिखाएगा, लेकिन बटन पर कोई भी शीर्षक सेट दिखाई नहीं देगा, क्योंकि आप शीर्षक या छवि सेट कर सकते हैं।

यदि आप (आपकी छवि और शीर्षक) दोनों को सेट करना चाहते हैं, तो निम्न कोड का उपयोग करें:

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

2
SetImage और SetBackgroundImage में क्या अंतर है ?
onmyway133

3
setBackgroundImage आपके शीर्षक पाठ पर बटन की चौड़ाई पर छवि को बढ़ाएगा जबकि setImage छवि को खींचे बिना शीर्षक पाठ को अनदेखा करते हुए छवि बना देगा।
अर्नेस्ट

21

इससे पहले कि यह मेरे लिए काम करेगा मुझे छवि फ्रेम आकार के आधार पर स्पष्ट रूप से बटन फ़्रेम का आकार बदलना था।

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;

@jrasmusson बस इतना जोड़ना चाहता था कि फ्रेम के साथ 3 पंक्तियों की रेखा भी लिखी जा सकती है[listButton sizeToFit]
bk138

10

स्विफ्ट उपयोगकर्ता के मामले में

// 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) 

9

आप इसे इस तरह से कर सकते हैं

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

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

8

आप छवि को किसी भी तरह से रख सकते हैं:

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

कोड के इस भाग ने मुझे भ्रमित कर दिया है। <code> btnImage = [UIImage imageNamed: @ "image.png"]; </ code> btnImage क्या है? यह मूल कोड में नहीं था। क्या वह नया बटन है?
माइक मार्टिन

आप इस तरह से एक और इमेज ऑब्जेक्ट लेने के बजाय सीधे बटन की छवि सेट कर सकते हैं: [btnTwo setImage: [UIImage imageNamed: @ "image.png"]];
अजय शर्मा

आपके पास बटन होना आवश्यक है: टाइप करें: यूआईबूटन टाइप टाइप करें। यूआईयूट्टन को टाइप करें कस्टम टाइप करें अन्य बुद्धिमान बटन आपकी छवि के अनुसार प्रदर्शित नहीं होगा।
प्रवीण-के

2

मैं एक जोड़ने के लिए एक समाधान के लिए देख रहा था UIImageमेरे लिए UIButton। समस्या यह थी कि यह छवि को आवश्यकता से अधिक प्रदर्शित करता है। बस इसके साथ मेरी मदद की:

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

हर बार जब मैं अपना प्रदर्शन करना चाहता हूं, तो UIImageViewमैं बस या hiddenको सेट कर देता हूं । अन्य समाधान भी हो सकते हैं लेकिन मैं इस सामान के साथ कई बार भ्रमित हो गया और इसने इसे हल कर दिया और मुझे पृष्ठभूमि में कर रहे आंतरिक सामान से निपटने की आवश्यकता नहीं थी ।YESNOUIButton


2

कोड से बटन को तैयार करने में इतनी चिंता न करें, आप इसे स्टोरीबोर्ड पर कर सकते हैं। यह मेरे लिए काम करता है, एक पंक्ति ... अधिक सरल।

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

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

2

स्विफ्ट 3 संस्करण (butt_img को Xcode में Assets.xcassets या Images.xcassets फ़ोल्डर में एक छवि सेट होना चाहिए :

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

वैसे भी, यदि आप चाहते हैं कि बटन के आकार को भरने के लिए छवि को छोटा किया जाए, तो आप इसे जोड़ सकते हैं UIImageViewऔर इसे अपनी छवि सौंप सकते हैं:

let img = UIImageView()
img.frame = btnTwo.frame
img.contentMode = .scaleAspectFill
img.clipsToBounds = true
img.image = UIImage(named: "butt_img")
btnTwo.addSubview(img)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.