2011-07-29 1 views
8

निम्न छवि पर एक नज़र डालें:UIButton नियंत्रण से तेज आयताकार किनारों को कैसे निकालें?

enter image description here

आप किनारों तेज आयत हैं और वे गोल कोने बटन के बाहर आ रहे हैं देख सकते हैं। मैं किनारों को कैसे दिखा सकता हूं और केवल गोल बटन दिखा सकता हूं?

अद्यतन (समाधान):

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.stopButton.bounds 
             byRoundingCorners:UIRectCornerAllCorners 
             cornerRadii:CGSizeMake(12.0, 12.0)]; 

// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.stopButton.bounds; 
maskLayer.path = maskPath.CGPath; 
// Set the newly created shape layer as the mask for the image view's layer 
self.stopButton.layer.mask = maskLayer; 

नई समस्या:

इस कोड को मुझे startButtonRound.layer पर त्रुटि देता है

मैं दौर कोनों को प्राप्त करने के लिए निम्न कोड का इस्तेमाल किया। कोनेराइडियस लाइन।

UIButton *roundStartButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     roundStartButton.frame = CGRectMake(10, 10, 100, 20); 
     [roundStartButton setBackgroundImage:[UIImage imageNamed:@"green_gradient.jpg"] forState:UIControlStateNormal]; 

     roundStartButton.layer.cornerRadius = 12.0; 
UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithCustomView:roundStartButton]; 

उत्तर

17

तुम अकेले CALayer के साथ ऐसा कर सकता है:

CALayer *myLayer = [CALayer layer]; 
[myLayer setMasksToBounds:YES]; 
[myLayer setCornerRadius:5.0f]; 
[myLayer setBorderWidth:1.0f]; 
[myLayer setBorderColor: [[UIColor blackColor] CGColor]]; 
[myLayer setBackgroundColor: [[UIColor whiteColor] CGColor]]; 

तुम भी QuartzCore ढांचा शामिल करना चाहते हैं और शामिल चौखटे अपनी खुद में शीर्षक होगा।

#include <QuartzCore/QuartzCore.h> 

आशा इस मदद करता है

टिम

+0

मैंने कोशिश की [बटन परत] सेटकॉर्नर रेडियस: 5.0 एफ]; लेकिन इसका बटन पर कोई प्रभाव नहीं पड़ा। – azamsharp

+0

गोलाकार कोनों को अपनी सामग्री को क्लिप करने के लिए परत प्राप्त करने के लिए आपको मास्क टॉबाउंड्स को हां में सेट करने की आवश्यकता हो सकती है। –

+0

क्या यूआईबटन को काम करने के लिए कोनेडियस के लिए आईबीओलेट के रूप में घोषित किया जाना है? मूल पोस्ट अद्यतन समस्या देखें। – azamsharp

5

मैं वह सब के साथ पूरा किया जा सकता लगता है:

self.stopButton.layer.cornerRadius = 12.0; 

लेकिन आप

self.stopButton.opaque = NO; 
self.stopButton.backgroundColor = [UIColor clearColor]; 

कोशिश की थी?

+0

धन्यवाद बिल! यह बहुत अच्छा काम किया! मुझे यकीन नहीं है कि मैंने क्या किया लेकिन अब भी कोने के बिना भी त्रिज्या यह किनारों को नहीं दिखा रहा था। लेकिन आपके कोड ने कोड की मेरी 5-6 लाइनों को हटा दिया तो धन्यवाद! – azamsharp

+0

UIButton.layer.cornerRadius मेरे लिए काम नहीं करता है। यह एक त्रुटि देता है लेकिन पृष्ठभूमि को सेट करने के लिए अपारदर्शी को साफ़ करने और सेट करने के लिए यह करता है। – okysabeni

+0

@Yko, क्या आप सचमुच 'UIButton.layer.cornerRadius' का उपयोग कर रहे हैं? कक्षा (कक्षा) का उदाहरण नहीं, कक्षा तक पहुंचने की कोशिश कर रहा है। – bshirley

0

उस छवि का स्वरूप बनाएं जिसे आपने अपना UIButton bckground रंग 'व्हाइट' पर सेट किया है। इसे 'साफ़ रंग' बनाएं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^