मैं एक की जरूरत UIButton
के साथ छवि और पाठ । छवि शीर्ष पर होनी चाहिए और पाठ छवि के नीचे आता है दोनों को क्लिक करने योग्य होना चाहिए।
मैं एक की जरूरत UIButton
के साथ छवि और पाठ । छवि शीर्ष पर होनी चाहिए और पाठ छवि के नीचे आता है दोनों को क्लिक करने योग्य होना चाहिए।
जवाबों:
मुझे बहुत जटिल उत्तर दिखाई देते हैं, वे सभी कोड का उपयोग करते हैं। हालाँकि, यदि आप इंटरफ़ेस बिल्डर का उपयोग कर रहे हैं , तो ऐसा करने का एक बहुत आसान तरीका है:
यहां तक कि आप UILabels और UIImages को बनाए बिना अन्य समाधानों के रूप में कोड द्वारा समान दृष्टिकोण का उपयोग कर सकते हैं। हमेशा इसे सरल रखें!
संपादित करें: सही इनसेट के साथ 3 चीजें सेट (शीर्षक, छवि और पृष्ठभूमि) वाले एक छोटे से उदाहरण से जुड़ी
Background
इसके बजाय छवि को सेट करना Image
होगा, अन्यथा आप शीर्षक शीर्षक को बदलने के लिए इनसेट मान भी सेट नहीं देखेंगे।
मुझे लगता है कि आप अपनी समस्या के समाधान के लिए देख रहे हैं :
UIButton *_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setFrame:CGRectMake(0.f, 0.f, 128.f, 128.f)]; // SET the values for your wishes
[_button setCenter:CGPointMake(128.f, 128.f)]; // SET the values for your wishes
[_button setClipsToBounds:false];
[_button setBackgroundImage:[UIImage imageNamed:@"jquery-mobile-icon.png"] forState:UIControlStateNormal]; // SET the image name for your wishes
[_button setTitle:@"Button" forState:UIControlStateNormal];
[_button.titleLabel setFont:[UIFont systemFontOfSize:24.f]];
[_button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; // SET the colour for your wishes
[_button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // SET the colour for your wishes
[_button setTitleEdgeInsets:UIEdgeInsetsMake(0.f, 0.f, -110.f, 0.f)]; // SET the values for your wishes
[_button addTarget:self action:@selector(buttonTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside]; // you can ADD the action to the button as well like
... बटन के बाकी अनुकूलन अब आपका कर्तव्य है, और बटन को अपने दृश्य में जोड़ना न भूलें।
अद्यतन # 1 और अद्यतन # 2
या, यदि आपको एक डायनामिक बटन की आवश्यकता नहीं है , तो आप इंटरफ़ेस बिल्डर में अपने दृश्य में अपना बटन जोड़ सकते हैं और आप उसी मान को वहां पर भी सेट कर सकते हैं। यह बहुत ही समान है, लेकिन यहां इस संस्करण के साथ-साथ एक साधारण चित्र भी है।
आप इंटरफ़ेस बिल्डर में अंतिम परिणाम भी देख सकते हैं क्योंकि यह स्क्रीनशॉट पर है।
Xcode-9 और Xcode-10 Apple ने एज इनसेट के बारे में अभी कुछ बदलाव किए हैं, आप इसे आकार-निरीक्षक के तहत बदल सकते हैं।
कृपया नीचे दिए गए चरणों का पालन करें:
चरण -1: इनपुट पाठ और उस छवि का चयन करें जिसे आप दिखाना चाहते हैं:
चरण -2: अपनी आवश्यकता के अनुसार बटन नियंत्रण चुनें जैसा कि नीचे दी गई छवि में दिखाया गया है:
चरण -3: अब निरीक्षक के आकार पर जाएं और अपनी आवश्यकता के अनुसार मूल्य जोड़ें:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.imageView.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";
लेकिन निम्नलिखित कोड पृष्ठभूमि में ऊपर और छवि पर लेबल दिखाएगा
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.background.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";
समान नियंत्रण में लेबल और बटन का उपयोग करने की आवश्यकता नहीं है क्योंकि UIButton में UILabel और UIimageview गुण हैं।
इस कोड का उपयोग करें:
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
button.imageView.frame=CGRectMake(0.0f, 0.0f, 50.0f, 44.0f);///You can replace it with your own dimensions.
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 35.0f, 50.0f, 44.0f)];///You can replace it with your own dimensions.
[button addSubview:label];
इस कोड का उपयोग करें:
UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sampleButton setFrame:CGRectMake(0, 10, 200, 52)];
[sampleButton setTitle:@"Button Title" forState:UIControlStateNormal];
[sampleButton setFont:[UIFont boldSystemFontOfSize:20]];
[sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"]
stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
[sampleButton addTarget:self action:@selector(buttonPressed)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:sampleButton]
मुझे एक ही समस्या का सामना करना पड़ा, और मैं इसे नीचे के रूप UIButton
में layoutSubviews:
विधि का एक नया उपवर्ग बनाकर और इसे ओवरराइड करके ठीक करता हूं :
-(void)layoutSubviews {
[super layoutSubviews];
// Center image
CGPoint center = self.imageView.center;
center.x = self.frame.size.width/2;
center.y = self.imageView.frame.size.height/2;
self.imageView.center = center;
//Center text
CGRect newFrame = [self titleLabel].frame;
newFrame.origin.x = 0;
newFrame.origin.y = self.imageView.frame.size.height + 5;
newFrame.size.width = self.frame.size.width;
self.titleLabel.frame = newFrame;
self.titleLabel.textAlignment = UITextAlignmentCenter;
}
मुझे लगता है कि एंजेल गार्सिया ओलोक्वी का जवाब एक और अच्छा समाधान है, यदि आप उन सभी को मैन्युअल रूप से इंटरफ़ेस बिल्डर के साथ रखते हैं, लेकिन मैं अपना समाधान रखूंगा क्योंकि मुझे अपने प्रत्येक बटन के लिए सामग्री इनसेट को संशोधित करने की आवश्यकता नहीं है।
इस दोनों के लिए छवि और पाठ बनाएं UIImageView
और UILabel
सेट करें .... फिर छवि दृश्य और लेबल पर एक कस्टम बटन रखें ...।
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search.png"]];
imageView.frame = CGRectMake(x, y, imageView.frame.size.width, imageView.frame.size.height);
[self.view addSubview:imageView];
UILabel *yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y,a,b)];
yourLabel.text = @"raj";
[self.view addSubview:yourLabel];
UIButton * yourBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[yourBtn setFrame:CGRectMake(x, y,c,d)];
[yourBtn addTarget:self action:@selector(@"Your Action") forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:yourBtn];
आपको पाठ के लिए छवि और कस्टम लेबल के लिए कस्टम इमेजव्यू बनाना चाहिए और आप अपने बटन को साक्षात्कार के रूप में जोड़ सकते हैं। बस।
UIButton *yourButton = [UIButton buttonWithType:UIButtonTypeCustom];
yourButton.backgroundColor = [UIColor greenColor];
yourButton.frame = CGRectMake(140, 40, 175, 30);
[yourButton addTarget:self action:@selector(yourButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:yourButton];
UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, yourButton.frame.size.width, yourButton.frame.size.height/2)];
imageView1.image =[UIImage imageNamed:@"images.jpg"];
[yourButton addSubview:imageView1];
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, yourButton.frame.size.height/2, yourButton.frame.size.width, yourButton.frame.size.height/2)];
label.backgroundColor = [UIColor greenColor];
label.textAlignment= UITextAlignmentCenter;
label.text = @"ButtonTitle";
[yourButton addSubview:label];
परीक्षण उद्देश्य के लिए, yourButtonSelected:
विधि का उपयोग करें
-(void)yourButtonSelected:(id)sender{
NSLog(@"Your Button Selected");
}
मुझे लगता है कि यह आपके लिए मददगार होगा।
यह वास्तव में सरल है, बस आप बटन की पृष्ठभूमि में छवि जोड़ सकते हैं और uicontrolstatenormal के लिए बटन के टाइटलबेल को टेक्स्ट दे सकते हैं। बस।
[btn setBackgroundImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateNormal];
[btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
[btn setTitle:@"Click Me" forState:UIControlStateNormal];