UIlabel layer.cornerRadius iOS 7.1 में काम नहीं कर रहा है


190

मैं वर्तमान में संपत्ति के साथ एक UILabel देख रहा हूं addMessageLabel.layer.cornerRadius = 5.0f; iOS 7.0 के साथ एक डिवाइस पर, यह गोल कोनों है। IOS 7.1 स्थापित डिवाइस के साथ, इसमें गोल कोने नहीं हैं।

क्या यह सिर्फ iOS 7.1 के साथ एक बग है?

जवाबों:


491

संपत्ति clipsToBoundsको सही पर सेट करें

addMessageLabel.clipsToBounds = true

3
सुनिश्चित नहीं हैं कि आपको iOS 7 पर ऐसा क्यों नहीं करना है, लेकिन iOS 7.1 पर है, लेकिन यह काम कर गया! साभार
माइक वी

11
नहीं, अजीब नहीं ... बस "प्रगति" ... <हमफ>, ऐसा लगता है कि UILabel's क्लिपटॉब अब ज्यादातर अन्य UIView की तरह FALSE के लिए डिफ़ॉल्ट है। एप्पल शायद सामान को अधिक सुसंगत बनाने की कोशिश कर रहा है। मेरा भी बस यही मुद्दा था।
लेस्ली गॉडविन

2
@ChristopherKing मैं इस पर प्रलेखन नहीं पा सका, लेकिन इसने मेरे परिदृश्य में भी काम किया, आश्चर्य मुझे लगता है :)
रहेल सादिक

3
ढेर अतिप्रवाह के लिए डेवलपर्स को धन्यवाद।
स्क्रबर

1
धन्यवाद दोस्त आपने मेरा समय (Y) बचा लिया।
अख्तर

66

मुझे लगता है कि कोने का दायरा निर्धारित करने का सबसे अच्छा तरीका है:

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

और सुनिश्चित करें कि "क्लिप साक्षात्कार" की जाँच की गई है:

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

"क्लिप साक्षात्कार" की जाँच करना कोड के बराबर है addMessageLabel.clipsToBounds = YES;


निश्चित रूप से, सबसे आसान तरीका
Mário Carvalho

यह सबसे अच्छा तरीका है। Ios 8+ और xcode 7.2 के साथ परीक्षण किया गया।
जीवनकाल

अगर कोई भी इसे ढूंढता हुआ यहां आया है और उसने काम नहीं किया है: यदि आप संपत्ति "कोनेरेडियस" डालते हैं तो यह iOS10 + पर काम करेगा। IOS9 पर इसे "लेयर.कोर्नररेडियस" होना है
नाथन बरेटो

सच: clipToBounds भी उपयोगकर्ता निर्धारित क्रम गुण (layer.cornerRadius के रूप में ही) में स्थापित किया जा सकता है: clipsToBounds, टाइप करें:: बूलियन, मूल्य यह कुंजी पथ होना चाहिए
Chuy47

24

अनुगमन का प्रयास करें,

[[addMessageLabel layer] setCornerRadius:5.0f];
[[addMessageLabel layer] setMasksToBounds:YES];

//or
[addMessageLabel setClipsToBounds:YES];

तीव्र

addMessageLable.layer.cornerRadius = 5.0
addMessageLable.layer.masksToBounds = true

//or
addMessageLable.layer.clipsToBounds = true

5

मेरा मुद्दा थोड़ा अलग था।

मैं जबकि किया करते btn.clipsToBounds = true

मैं सेटिंग नहीं कर रहा था:

btn.layer.cornerRadius = 20

क्योंकि मेरे पास अलग-अलग स्क्रीन साइज़ थे। इसके बजाय मैंने इस उत्तर का पालन ​​किया और किया:

override func layoutSubviews() {
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

यह काम नहीं कर रहा था क्योंकि मैं जोड़ना भूल गया था super.layoutSubviews()। सही कोड है:

override func layoutSubviews() {
    super.layoutSubviews()
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

एक टन धन्यवाद .. केवल इस जवाब ने मेरे लिए काम किया। स्विफ्ट 3, एक्सकोड 8.3.3
स्काईवॉकर

3

मैंने नीचे की कोशिश की है और मुझे एक सफल आउटपुट मिला है।

yourlabelname.layer.cornerRadius = 10.0f;
[yourlabelname setClipsToBounds:YES];

क्या कुछ और है जो आपको रोक रहा है?


IOS 7.1 से पहले, clipsToBoundsको डिफ़ॉल्ट किया गया था YES, इसलिए लाइन [yourlabelname setClipsToBounds:YES];मेरे मूल कोड में नहीं थी।
माइक वी

0
 //works perfect in Swift 2.0 for a circular or round image          


@IBOutlet var theImage: UIImageView!
        override func viewDidLoad() {
            super.viewDidLoad()
    //Make sure the width and height are same
            self.theImage.layer.cornerRadius = self.theImage.frame.size.width / 2
            self.theImage.layer.borderWidth = 2.0
            self.theImage.layer.borderColor = UIColor.whiteColor().CGColor
            self.theImage.clipsToBounds = true

        }

0
yourlabelname.layer.cornerRadius = yourlabelname.frame.size.width/2;
[yourlabelname setClipsToBounds:YES];

सुनिश्चित करें कि आप उपयुक्त परिनियोजन लक्ष्य के साथ जाँच कर रहे हैं।


0

UIView के एक्सटेंशन के रूप में निम्नलिखित कोड जोड़ें

//// Story board Extra Feature for create border radius, border width and border Color
extension UIView {
    /// corner radius
    @IBInspectable var borderColor: UIColor? {
        set {
            layer.borderColor = newValue!.cgColor
        }
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            } else {
                return nil
            }
        }
    }
    @IBInspectable var borderWidth: CGFloat {
        set {
            layer.borderWidth = newValue
        }
        get {
            return layer.borderWidth
        }
    }
    @IBInspectable var cornerRadius: CGFloat {
        set {
            layer.cornerRadius = newValue
            clipsToBounds = newValue > 0
        }
        get {
            return layer.cornerRadius
        }
    }
}

उसके बाद आपको इंटरफ़ेस बिल्डर में निम्नलिखित विशेषताएं मिलेंगी।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.