2011-11-29 9 views
6

पर एक छाया है, मैं एक आईपैड एप्लिकेशन के लिए प्रोग्रामेटिक रूप से एक बटन बना रहा हूं। जब मैं बटन देखता हूं, तो नीचे एक छाया प्रकार की चीज़ दिखती है। यह क्या है और मैं इससे कैसे छुटकारा पा सकता हूं?मेरे बटन

shadow button

यहाँ कोड है कि यह बनाता है:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.titleLabel.font = [UIFont fontWithName:@"Trebuchet MS" size:12]; 
[myButton setTitle:@"test" forState:UIControlStateNormal]; 
myButton.frame = CGRectMake(0, 0, self.leftScrollView.frame.size.width, 50); 

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gear12.png"]]; 

[myButton addSubview:myImageView]; 
[self.leftScrollView addSubview:myButton]; 

अद्यतन: जब इसकी मेरी scrollview में

ठीक है, मुझे लगता है मैं केवल यह है कि प्रभाव प्राप्त नोटिस। अगर मैं इसे देखने के लिए जोड़ता हूं, कोई छाया प्रभाव नहीं।

शीर्ष परीक्षण बटन, बटन दृश्य का एक सबूत है। निचला बटन स्क्रॉलव्यू का एक सबव्यूव है जो दृश्य का एक सबव्यूव है (बटन/व्यू बनाम बटन/स्क्रॉलव्यू/व्यू)।

सफेद अनुभाग दृश्य है, ग्रे स्क्रॉलव्यू/व्यू है।

shadow effect 2

अद्यतन 2:

रूप robmayor से कहा, UIButtons हमेशा कि डबल लाइन प्रभाव, बस noticeble नहीं पृष्ठभूमि का रंग सफेद होता है जब है। नीला एक दृश्य है और ग्रे सबव्यू स्क्रॉलव्यू है।

enter image description here

+0

इस उपयोगी हो सकता है: http://stackoverflow.com/questions/18341319/how-to-get-rid-of-gap-around-round-rect-button –

उत्तर

5

आईपैड पर, एक गोल-रेक्ट यूआईबटन हमेशा अपने निचले किनारे के साथ एक सफेद रेखा खींचता है। बटन की पर्यवेक्षण सफेद होने पर आप उस सफेद रेखा को नहीं देख सकते हैं, लेकिन यह अभी भी वहां है।

  • superview सफेद बनाओ:

    आप कुछ ही विकल्प हैं। यह सबसे आसान है लेकिन आपको ऐसा लगता है कि जिस तरह से दिखता है।

  • अपने पसंदीदा छवि संपादक में कुछ गोलाकार आयत छवियां बनाएं। बटन प्रकार को कस्टम पर सेट करें और अपनी गोलाकार आयत छवियों को बटन की छवियों के रूप में सेट करें।

  • UIButton का उप-वर्ग बनाएं और इसकी drawRect: विधि ओवरराइड करें।

  • सेट कस्टम करने के लिए बटन प्रकार और बटन की परत गुणों का उपयोग (button.layer.backgroundColor, button.layer.borderColor, button.layer.borderWidth, button.layer.cornerRadius) बटन एक गोल रेक्ट उपस्थिति देने के लिए। बटन को छुआ जाने पर आपको button.layer.backgroundColor अपडेट करना होगा यदि आप इसे सामान्य की तरह नीले रंग में बदलना चाहते हैं। (वास्तव में एक सामान्य एक नीली ढाल का उपयोग करता है।)

+0

यह ऐप्पल की बजाय मूर्खतापूर्ण है। एक साधारण बटन को और अधिक जटिल जोड़ता है तो इसे होना चाहिए। धन्यवाद। – Padin215

+0

ऐसा लगता है कि एक गोलाकार रेक्ट बटन वास्तव में एक समूहबद्ध शैली UITableViewCell के रूप में खींचा जाता है और इस प्रकार नीचे सफेद सीमा प्राप्त होती है। यह सफेद सीमा मानक समूह-शैली तालिका पृष्ठभूमि पर नीचे सेल के लिए बहुत अच्छी लगती है। लेकिन बटन बनाना एक ही ड्राइंग कोड ऐप्पल के हिस्से पर एक खराब विकल्प था। – matt

-1

बदलें [UIButton buttonWithType:UIButtonTypeRoundedRect] साथ:

UIButton *myButton = [UIButton new]; 

या:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

आप अपने अनुकूलित बटन करना चाहते हैं। यदि आवश्यक हो तो भी आप इसे गोलाकार कोनों के साथ बना सकते हैं।

+1

क्यों क्या उससे कोई अंतर पड़ेगा? गोलाकार रेक्ट बटन आम तौर पर इस तरह दो बार आकर्षित नहीं करते हैं। यह अधिक संभावना है कि ओपी गलती से लगभग एक ही स्थान पर दो बटन खींच रहा है। – matt

+0

मैं अभी अपने कोड में केवल एक बटन जोड़ रहा हूं। मैंने अतिरिक्त जानकारी के साथ अपना प्रश्न अपडेट किया। दूसरी छवि, मैं सिर्फ आईबी में बटन खींच लिया। – Padin215

+0

@ मैट, गोलाकार रेक्ट बटन बिल्कुल इस तरह खुद को आकर्षित करते हैं। आईबी में खुद के लिए जांचना मुश्किल है। –

9

यह प्रश्न पुराना है (6 महीने) लेकिन मुझे डबल लाइनों के इस खराब प्रभाव को हटाने/मास्क करने का समाधान मिला है।

[yourButton.layer setBackgroundColor: [[UIColor blackColor]CGColor]]; 
[yourButton.layer setBorderWidth:1.0f]; 
[yourButton.layer setBorderColor:[[UIColor blackColor]CGColor]]; 
[yourButton.layer setShadowOpacity:0.1f]; 
[yourButton.layer setCornerRadius:10]; 

चयनित यूआईसीओलर आपके विचार की वर्तमान पृष्ठभूमि के आधार पर है।

परिणाम: enter image description here

+0

यह बटन में एक काला सीमा बनाते हैं। बेहतर काम करें, लेकिन लाइन को हटाएं नहीं। – Rodrigo

+0

यह सही है! (हालांकि, मुझे यकीन नहीं है कि पृष्ठभूमि रंग या छाया अस्पष्टता स्थापित करना जरूरी है।) – fumoboy007