IOS 7 में UIButton छवि सेट करने से नीले रंग का बटन दिखाई देता है


163

IOS 6 SDK पर मैंने एक बटन के अंदर एक छवि प्रदर्शित करने के लिए कोड की निम्नलिखित पंक्तियां लिखी हैं:

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];

लेकिन अब Xcode 5 और iOS 7 के साथ यह काम नहीं करता है। बटन में चित्र नहीं है। बटन नीले रंग से भरा है।


क्या आप बटन पर क्लिक करने पर छवि दिखाते हैं?
JustAnotherCoder 21

जवाबों:


378

IOS7 में नया बटन प्रकार है जिसे UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS (7_0), // मानक सिस्टम बटन कहा जाता है

अपनी .xib फ़ाइल और बटन प्रकार को कस्टम में बदलें छवि को देखो

इस प्रोग्राम को करने के लिए, इस लाइन को इसमें जोड़ें viewDidLoad:

[UIButton buttonWithType:UIButtonTypeSystem]; 

2
[UIButton बटन विथ टाइप: UIButtonTypeSystem];
13

57
ध्यान दें कि यह समाधान सिस्टम टिंट रंग को हटाता है, लेकिन हाइलाइट किए गए और सामान्य राज्यों के बीच एक कठिन संक्रमण भी होता है। यदि आप सिस्टम के व्यवहार, एनिमेशन आदि को संरक्षित करना चाहते हैं, लेकिन टिंट के रंग से छुटकारा पाना चाहते हैं, तो कोशिश करें [myUIButton setImage: [[UIImage imageNamed: @"myButtonImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal];(आईबी में "सिस्टम" पर सेट बटन प्रकार के साथ)।
JWK

धन्यवाद यह बहुत मददगार था। हमारे मामले में, बटन पारदर्शी PNG और फिर टिनिंग के आकार से भी जुड़ा हुआ था।
g_pass

Geezm वे छुपाया है कि एक अच्छी तरह से वे नहीं किया ?!
मॉरी मार्कोविट्ज़

यह काम करता है :) उर कोड में कुछ अन्य समस्या हो सकती है। यदि आप Xcode 6.1 को देखते हैं तो आप उपलब्ध विकल्पों को स्पष्ट रूप से देख सकते हैं ..
Chamira Fernando

53

ऐसा लगता है कि आईओएस 7 बटन के टिंट रंग को प्रदर्शित करने के लिए अल्फा मास्क के रूप में प्रदान की गई छवि का उपयोग कर रहा है। बटन प्रकार बदलने से UIButtonTypeCustomमेरे लिए चाल चली गई (धन्यवाद user716216!)। छवि को पृष्ठभूमि के रूप में सेट करना हमेशा काम नहीं करता है यदि आपके पास पहले से ही पृष्ठभूमि छवि है, जैसा कि मेरा मामला था।


धन्यवाद! मूल उपयोगकर्ता इसे उत्तर के रूप में स्वीकार करना भूल गया।
जिगज़त

यह मेरे लिए काम कर रहा है, लेकिन मेरे मामले के लिए काम नहीं करने के लिए सिस्टम में बदलाव, आपके सभी योगदानों के लिए धन्यवाद
chings228

29

स्विफ्ट 3, 4, 5:

let image = UIImage(named: "my-image")
myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)

24

एक अच्छा मौका है कि छवि वहाँ है और आप इसे देख नहीं सकते हैं। बटन के प्रकार को बदलने का प्रयास करें UIButtonTypeCustom। यदि वह काम नहीं करता है, तो बटन की पृष्ठभूमि का रंग सेट करें[UIColor clearColor];


9

मुद्दा टिंटकलर है। डिफ़ॉल्ट रूप से, iOS हर बटन पर एक नीले रंग का रंग फेंकता है। आप इसे 3 तरीकों से प्राप्त कर सकते हैं।

  1. टिंट रंग बदलें। [button setTintColor:[UIColor blackColor]]; यह आपकी छवि को उन तरीकों से रंग सकता है जिन्हें आप नहीं चाहते हैं।

  2. जैसा कि अधिकांश अन्य ने सुझाव दिया है, पृष्ठभूमि छवि सेट करें। [button setBackgroundImage:[UIImage...]];

  3. अपने बटन में एक UIImageView जोड़ें।

UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];

[button addSubView:img];


9

तेजी के लिए:

    let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton

6

मेरी भी यही समस्या थी। मेरे स्टोरीबोर्ड पर मेरे पास बिना किसी छवि के एक बटन था।

मैं तब कोड में छवि निर्दिष्ट करूंगा।

IOS 7 आया और मुझे बहुत सारी नीली छवियां मिलीं।

संकल्प सरल था फिर भी भ्रामक। अगर मैं स्टोरीबोर्ड पर कोई छवि प्रदान करता हूं और फिर छवि को रन टाइम में बदल देता हूं तो यह ठीक काम करता है।

आपको हमेशा स्टोरीबोर्ड पर एक आरंभिक छवि निर्दिष्ट करनी चाहिए, भले ही आप इसका उपयोग न करने जा रहे हों।


3

इसने मेरे लिए काम किया

[myButton1 setBackgroundImage:[UIImage imageNamed:@"phones.png"] forState:UIControlStateNormal];

नोट: ऐसा करने से पहले सामने की छवि को हटा दें।


कृपया पृष्ठभूमि छवि कैसे निकालें !!
simbesi.com

3

पुराना धागा, लेकिन मैं झंकार करना चाहता था क्योंकि मुझे सिर्फ यही समस्या थी। मुद्दा सिर्फ इतना था कि आप सेटइमेज को कॉल कर रहे हैं जब आपको सेटबैकग्राउंडआईमेज को कॉल करना चाहिए।


1

दिए गए समाधानों में से कोई भी मेरे लिए काम नहीं कर रहा था। यदि आप स्टोरीबोर्ड में एक प्रारंभिक छवि सेट नहीं करते हैं, तो आप अभी भी उपयोग करके बटन की छवि को बदल सकते हैं setBackgroundImage

आपके उदाहरण के लिए, केवल एक मामूली बदलाव की आवश्यकता है।

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setBackgroundImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];

1

इस समस्या को xcode में बटन के नीले रंग की समस्या कहा जाता है। जब हम कोड द्वारा बटन बनाते हैं तो बटन डिफ़ॉल्ट रूप से नीले रंग का रंग दिखाता है। यह आपके सेल के रंग के अनुसार टिंट रंग को काले या सफेद रंग में असाइन करके हल किया जा सकता है। कोड है:

UIImage *closebtnimg = [UIImage imageNamed:@"icon_uncheck.png"];
 UIImage *closebtnimg1 = [UIImage imageNamed:@"icon_checked.png"];

Custombutton *button = [Custombutton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(52, 66, 25, 24)];
[button setBackgroundImage:closebtnimg forState:UIControlStateNormal];
[button setBackgroundImage:closebtnimg1 forState:UIControlStateSelected];
[button setTintColor:[UIColor whiteColor]];
[cell.contentView addSubview:button];
[button addTarget:self action:@selector(changeImage:)  forControlEvents:UIControlEventTouchUpInside];

इसकी बहुत मददगार @ शने
रुद्र

1

Xcode 9.2 का उपयोग करना उपरोक्त में से किसी भी समाधान के लिए काम नहीं करता है जो मैं देख रहा था।

मैं एक ऐसे समाधान की तलाश में था, जो मुझे स्टोरीबोर्ड के अंदर .normalऔर .selected UIControlStateउनके मूल रेंडरिंग मोड के लिए सेट करने की सुविधा दे , लेकिन, स्विफ्ट फ़ाइल के अंदर, छवि नामों के बारे में कोई स्ट्रिंग शाब्दिक मौजूद नहीं होना चाहिए।

मूल रूप से, आपके कोड के अंदर आपको अपने स्टोरीबोर्ड के अंदर सेट की गई छवि प्राप्त होगी .normalऔर इसे .alwaysOriginalउसी तरह से पुनः प्रस्तुत करना होगा ( जैसे .selectedराज्य के लिए), तो आप उस छवि को सेट कर देंगे (जो अब मूल रूप में प्रस्तुत की गई है और इससे प्रभावित नहीं होगी) संबंधित राज्य ( .normalऔर .selected) के लिए टिंट) UIButton

यह रहा:

// Get your .normal image (you set via your storyboard) and render it as original
let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
// Set your normal image but this time rendered as original
yourButton.setImage(unselectedImage, for: .normal)
// Same for selected state
let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
yourButton.setImage(selectedImage, for: .selected)

इस तरह आप अपनी बटन छवि स्थिति सेट कर सकते हैं और यदि छवि का नाम बदल जाएगा, तो यह आपके कोड को प्रभावित नहीं करेगा।


1

IOS 13 में - बस टिंट प्रॉपर्टी को व्हाइट में सेट करें, जबकि कस्टम के रूप में UIButton के प्रकार को ध्यान में रखते हुए


0

सभी चार राज्यों (डिफ़ॉल्ट, हाइलाइटेड, चयनित, अक्षम) के लिए टिंट रंग को स्पष्ट बनाने के लिए मेरे लिए काम किया।


-1

में स्विफ्ट 4 , अपने प्रारंभ UIButtonऔर इस प्रकार uyour छवि डेटा में निर्दिष्ट करें:

let myButton = UIButton(type: .cutsom)
myButton.setImage(UIImage(data:myImageData), for: .normal)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.