एक बटन के कोनों को गोल कैसे करें


182

मेरे पास एक आयत छवि (jpg) है और इसे एक बटन की पृष्ठभूमि को xcode में गोल कोने के साथ भरने के लिए उपयोग करना चाहते हैं।

मैंने निम्नलिखित लिखा है:

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect frame = CGRectMake(x, y, cardWidth, cardHeight);
button.frame = frame;
[button setBackgroundImage:backImage forState:UIControlStateNormal];

हालाँकि, उस दृष्टिकोण के साथ मुझे जो बटन मिलता है, उसके कोने गोल नहीं होते हैं: यह इसके बजाय एक सादे आयत है जो बिल्कुल मेरी मूल छवि जैसा दिखता है। मैं अपने बटन का प्रतिनिधित्व करने के लिए गोल कोने के साथ एक छवि के बजाय कैसे प्राप्त कर सकता हूं?

धन्यवाद!

जवाबों:


436

मुझे लगता है कि मुझे आपकी समस्या मिल गई, मैंने UITextArea के साथ निम्नलिखित समाधान की कोशिश की और मुझे लगता है कि यह UIButton के साथ भी काम करेगा।

सबसे पहले इसे अपने .m फ़ाइल में आयात करें -

#import <QuartzCore/QuartzCore.h>

और फिर अपनी loadViewविधि में निम्नलिखित पंक्तियाँ जोड़ें

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
    yourButton.clipsToBounds = YES;

आशा है कि यह आपके लिए काम करता है और यदि हाँ संवाद करते हैं।


6
"यूजर डिफाइंड रनटाइम अटेंडेस" इंस्पेक्टर
एवी चेरी

स्विफ्ट के लिए भी काम करता है! बस हां को सच में बदलें।
एंड्रयू थॉमस

119

आप इस RunTime Attributes द्वारा प्राप्त कर सकते हैं

यहां छवि विवरण दर्ज करें

हम कस्टम बटन बना सकते हैं। अन्याय देखें स्क्रीनशॉट संलग्न है।

कृपया ध्यान दें:

रनटाइम विशेषताओं में सीमा के रंग को बदलने के लिए इस निर्देश का पालन करें

  1. कैलेयर की श्रेणी वर्ग बनाएँ

  2. एच फ़ाइल में

    @property(nonatomic, assign) UIColor* borderIBColor;
  3. एम फाइल में:

    -(void)setBorderIBColor:(UIColor*)color {
        self.borderColor = color.CGColor;
    }
    
    -(UIColor*)borderIBColor {
        return [UIColor colorWithCGColor:self.borderColor];
    }

अब बॉर्डर कलर चेक स्क्रीनशॉट सेट करने के लिए

अद्यतन उत्तर

धन्यवाद


4
बस मुझे या उत्तर में जानकारी अधूरी है? यह वास्तव में काम नहीं करता है। अद्यतन: यह तब तक काम करता है जब तक मैं निर्दिष्ट नहीं करता borderColor। लेकिन फिर यह हमेशा बॉर्डर के लिए काले रंग का उपयोग करता है।
जॉनी

3
विस्तारित उत्तर: IB में रंग सेट UIColor प्रकार की है जो बॉर्डरलाइन के साथ काम नहीं करता है, जो CGCRRef का है। या कुछ इस तरह का। तो इसका एक समाधान है, काइलेर पर एक श्रेणी बनाना, @property(nonatomic, assign) UIColor* borderIBColor;जिसमें हेडर फ़ाइल में कुछ ऐसा (जो किसी और नाम से नहीं टकराता), और कार्यान्वयन है:-(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}
जॉनी

1
यदि आप एक सीमा रंग नहीं चाहते हैं, तो सीमा को 0 पर सेट करें और आपके पास एक नहीं होगा!
जंगलबेव

स्विफ्ट के बारे में क्या?
जयप्रकाश दुबे ५

1
@ जयप्रकाशदुबे I कैलेयर का विस्तार करते हैं।
कृति पटेल पटेल

14

आप DCKit नामक मेरी लाइब्रेरी की जाँच कर सकते हैं । यह स्विफ्ट के नवीनतम संस्करण पर लिखा गया है ।

आप सीधे इंटरफ़ेस बिल्डर से एक गोल कोने बटन / पाठ क्षेत्र बनाने में सक्षम होंगे:

DCKit: गोल बटन

इसमें कई अन्य शांत विशेषताएं भी हैं, जैसे सत्यापन के साथ पाठ क्षेत्र, सीमाओं के साथ नियंत्रण, धराशायी सीमाएं, सर्कल और हेयरलाइन आदि।


11

एक सर्कल प्राप्त करने के लिए सीमा के कोने त्रिज्या के लिए धक्का :

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;

यहां छवि विवरण दर्ज करें

यदि बटन फ्रेम वर्गाकार है तो यह फ्रेम.हाईट या फ्रेम.ऑवर्टेशन से कोई फर्क नहीं पड़ता। अन्यथा दोनों का सबसे बड़ा उपयोग करें।


7

QuartCore फ्रेमवर्क आयात करें यदि यह आपके मौजूदा प्रोजेक्ट में नहीं है, तो viewcontroller.m#import <QuartzCore/QuartzCore.h> में आयात करें

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect]];
CGRect frame = CGRectMake(x, y, width, height); // set values as per your requirement
button.layer.cornerRadius = 10;
button.clipsToBounds = YES;

6
UIButton* closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 90, 35)];
//Customise this button as you wish then
closeBtn.layer.cornerRadius = 10;
closeBtn.layer.masksToBounds = YES;//Important

4

पहले सेट की चौड़ाई = 100 और ऊँचाई = 100 बटन की

उद्देश्य सी समाधान

YourBtn1.layer.cornerRadius=YourBtn1.Frame.size.width/2;
YourBtn1.layer.borderColor=[uicolor blackColor].CGColor;
YourBtn1.layer.borderWidth=1.0f;

स्विफ्ट 4 सॉल्यूशन

YourBtn1.layer.cornerRadius = YourBtn1.Frame.size.width/2
YourBtn1.layer.borderColor = UIColor.black.cgColor
YourBtn1.layer.borderWidth = 1.0

2

यदि आप केवल एक कोने या दो कोनों आदि के लिए एक गोल कोना चाहते हैं ... तो इस पोस्ट को पढ़ें:

[ObjC] - गोल कोने के साथ UIButton - http://goo.gl/kfzvKP

यह एक XIB / स्टोरीबोर्ड उपवर्ग है। बिना कोड लिखे आयात करें और सीमाएँ निर्धारित करें।



2

स्विफ्ट 3 के लिए अद्यतन:

UIButton कॉर्नर राउंड बनाने के लिए नीचे दिए गए कोड का उपयोग किया जाता है:

 yourButtonOutletName.layer.cornerRadius = 0.3 *
        yourButtonOutletName.frame.size.height

2

मेरे कोड की कोशिश करो। यहां आप UIButton के सभी गुण जैसे टेक्स्ट कलर, बैकग्राउंड कलर, कॉर्नर रेडियस आदि सेट कर सकते हैं।

extension UIButton {
    func btnCorner() {
        layer.cornerRadius = 10
        clipsToBounds = true
        backgroundColor = .blue
    }
}

अब इस तरह से कॉल करें

yourBtnName.btnCorner()




0

स्विफ्ट 4 अपडेट

मैंने भी कई विकल्पों की कोशिश की फिर भी मैं अपने यूआईब्यूटन दौर को प्राप्त करने में सक्षम नहीं था। मैंने viewDidLayoutSubviews()सॉल्व्ड माय इश्यू के अंदर कॉर्नर त्रिज्या कोड जोड़ा ।

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = anyButton.frame.height / 2
    }

इसके अलावा, हम कोनेरेडियस को निम्नानुसार समायोजित कर सकते हैं

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = 10 //Any suitable number as you prefer can be applied 
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.