2009-05-12 18 views
12

के लिए आयताकार सीमा कैसे सेट करें मैं एक कस्टम UIButton की पृष्ठभूमि के रूप में एक छवि सेट करने की कोशिश कर रहा हूं। मैं इंटरफ़ेस बिल्डर में "गोलाकार आय" UIButton के लिए पृष्ठभूमि छवि सेट करने में सक्षम था, लेकिन अब सीमाएं गायब हो गई हैं। क्या सीमाओं को बनाए रखने का कोई तरीका है? इसके अलावा, मैं सीमाओं को गोल करने के बजाय आयताकार दिखाऊंगा।कस्टम प्रकार UIButton

+0

एक छोटी सी में अधिक जानकारी:

पहले, जोड़े क्वार्ट्ज

#import <QuartzCore/QuartzCore.h> 

सेट गुण? क्या आप कार्यान्वित कर रहे हैं-ड्राउरक्ट: बिल्कुल? हम किस तरह के कस्टम बटन के बारे में बात कर रहे हैं? क्या आपने किसी छवि का उपयोग करके अपनी पृष्ठभूमि सेट करने का प्रयास किया है (यही वह है जो अधिकांश लोग शायद करेंगे), या आप विशेष रूप से आयत-चित्रकारी विधियों की तलाश में हैं? –

+0

आपको थोड़ा और विशिष्ट होना होगा। क्या आप कस्टम सीमा खींचने की कोशिश कर रहे हैं? अपने बटन का आकार सेट करें? कृपया हमें कुछ और विवरण दें। –

+0

ठीक है, मैं UIButton की पृष्ठभूमि के रूप में एक छवि सेट करने की कोशिश कर रहा हूँ। मैंने इंटरफ़ेस बिल्डर में "गोलाकार आयत" UIButton के लिए पृष्ठभूमि छवि सेट करके ऐसा किया। लेकिन सीमाएं गायब हो गई हैं, क्या सीमाओं को बनाए रखने का कोई तरीका है? मुझे "गोलाकार आयत" की जगह सीमा के रूप में सीमा बनाने की जरूरत है। – afin

उत्तर

3

आप एक बटन में एक पृष्ठभूमि छवि सेट करते हैं, बटन की रूपरेखा चले जाओ:

यहाँ एक उदाहरण है। उन्हें अपनी छवि में शामिल करें, अगर आप की जरूरत है विभिन्न आकारों

stretchableImageWithLeftCapWidth:topCapHeight:

विधि UIImage

पर देखो।

17

cornerRadius, borderWidth और borderColorCALayer के गुण देखें। ये गुण आईफोन ओएस 3.0 के रूप में नए हैं।

शायद आप UIButton उपclass करना चाहते हैं और फिर इन गुणों को कन्स्ट्रक्टर में सेट करना चाहते हैं। आपके बटन में एक परत प्रॉपर्टी है जिसे आप इन सीमा गुणों को सेट करने के लिए एक्सेस कर सकते हैं।

- (id)initWithFrame:(CGRect)frame { 
if(self = [super initWithFrame:frame]) { 

    [self.layer setBorderWidth:1.0]; 
    [self.layer setCornerRadius:5.0]; 
    [self.layer setBorderColor:[[UIColor colorWithWhite:0.3 alpha:0.7] CGColor]]; 
} 

return self; 
} 
+0

आईफोन 2.2.1 में कोई कामकाज है? – afin

+0

2.2.1 में मैं केंडल नीचे दिए गए सुझावों के आधार पर कुछ के साथ जाऊंगा। क्या यह एक नया एप्लीकेशन है? यदि ऐसा है, तो मुझे पूरा यकीन है कि ऐप्पल केवल उन ऐप्स को अनुमोदित करेगा जो अब से आईफोन ओएस 3.0 के अनुकूल हैं। –

+0

हां, यह एक नया एप्लीकेशन है। चूंकि ऐप्पल केवल ओएस 3.0 संगत अनुप्रयोगों को स्वीकार करने जा रहा है, इसलिए नए एप्लिकेशन पिछले ओएस संस्करणों के साथ काम नहीं कर सकते हैं। हालांकि ओएस 3.0 अपग्रेड निःशुल्क है, उनमें से कुछ अपग्रेड करने को तैयार नहीं हो सकते हैं। कृपया अपने विचार साझा करें। – afin

43
#import <QuartzCore/QuartzCore.h> // don't forget to add this in your file 
    CALayer * layer = [yourUIButton layer]; 
    [layer setMasksToBounds:YES]; 
    [layer setCornerRadius:0.0]; //when radius is 0, the border is a rectangle 
    [layer setBorderWidth:1.0]; 
    [layer setBorderColor:[[UIColor grayColor] CGColor]]; 

मुझे पता है कि यह एक पुराना सवाल है, लेकिन फिर भी मैं अपना उत्तर यहां पोस्ट करना चाहता हूं। चूंकि मैं जवाब की तलाश में था लेकिन मुझे यह एक आसान तरीके से हल कर लिया।

+0

बहुत बहुत धन्यवाद दोस्त – SampathKumar

+0

वास्तव में कोर एनिम के बिना ऐसा करने का कोई तरीका नहीं है? –

+2

उन लोगों के लिए जिन्होंने नीचे @TylerJames को नहीं देखा: ध्यान दें कि आपको काम करने के लिए क्वार्ट्जकोर फ्रेमवर्क आयात करने की आवश्यकता है। – mbuc91

8

आईबी में आप नीचे दिए गए चित्र में किए गए गोलाकार कोनों को सेट करने के लिए "उपयोगकर्ता परिभाषित रनटाइम विशेषताओं" भी कर सकते हैं।

http://i.stack.imgur.com/uBkuB.png

+0

बढ़िया! धन्यवाद –

+0

यह एक अच्छा खोज है! धन्यवाद :) – windson

7

मैं सिर्फ Nanshi और जोनाथन द्वारा प्रदान की उत्तर देने के लिए जोड़ना चाहते हैं।

border और cornerRadius परत के गुणों तक पहुंचने के लिए आपको पहले क्वार्ट्जकोर फ्रेमवर्क आयात करने की आवश्यकता होगी।

#import <QuartzCore/QuartzCore.h>

नहीं तो आप गुण उपयोग करने में सक्षम नहीं होगा।

+0

महत्वपूर्ण चाल जोड़ने के लिए धन्यवाद :) – trillions

1

आप बटन की परत संपत्ति तक पहुंच करके कैलियर पर सीमा गुण सेट कर सकते हैं। शायद

[[myButton layer] setBorderWidth:2.0f]; 
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor];