2011-10-27 21 views
10

मैं इस प्रकार एक कस्टम बटन फ्रेम आकर्षित करने के लिए कोशिश कर रहा हूँ के रूप में रूप में अच्छा नहीं लगता है:कस्टम बटन फ्रेम दौर रेक्ट UIButton

UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds 
                cornerRadius:RECT_CORNECR_RADIUS]; 

[stroke stroke]; 

लेकिन किसी कारण से कोने घटता पक्षों से विचारक देखो। यदि आप UIButton के डिफ़ॉल्ट फ्रेम को देखते हैं तो यह बहुत समान है। ए UIButton है, बी एक कस्टम बटन है।

कोई भी विचार मैं इसे UIButton की तरह कैसे बना सकता हूं।

A is a UIButton, B is a custom button

उत्तर

25

आप अपने बटन की सीमाओं का पीछा कर रहे हैं। इससे आपकी रेखा किनारों पर केंद्रित होगी, इसलिए लाइन की मोटाई का आधा सीमा सीमा से बाहर है और खींचा नहीं गया है। यही कारण है कि यह कोनों में पूरी मोटाई है। अपने बाउंड आयत पर CGRectInset का उपयोग करें (अपनी रेखा की आधा मोटाई से इन्सेट करें) और उस आय को स्ट्रोक करें।

+0

यही वह है! अब सब समझ आ रहा है। मैंने सीजीआरईटीईनेट (self.bounds, 1, 1) किया और सभी ने पूरी तरह से काम किया। धन्यवाद! – Nikolozi

+0

धन्यवाद, इंसेट जोड़ने से पहले मुझे एक धराशायी गोलाकार आयत के कोनों पर एक भड़क गया स्ट्रोक मिल रहा था और इससे हल हो गया। – thomh

0

समस्या आप शायद एंटीलायज़िंग़ के कारण है। आप अपने बीज़रपाथ को चित्रित करने से पहले कोरग्राफिक्स की एंटीअलाइजिंग सेटिंग्स को बदलने का प्रयास कर सकते हैं।

आपके बटन के CALayer और cornerRadius संपत्ति का उपयोग करना एक आसान समाधान है। यह एक गोल कोने

आकर्षित करने के लिए आसान होगा तो self अपने कस्टम बटन है:

self.layer.cornerRadius = RECT_CORNER_RADIUS; 
self.layer.borderWidth = 1.0f; 
self.layer.borderColor = [UIColor blackColor].CGColor; 

बेशक QuartzCore ढांचे आयात और उसके शीर्ष लेख आयात करने के लिए इस काम करने के लिए मत भूलना (#import)