UILabel के चारों ओर बॉर्डर कैसे बनाएं?


140

क्या उइबेल के लिए अपने आसपास की सीमा खींचने का कोई तरीका है? यह मेरे लिए पाठ प्लेसमेंट को डीबग करने और प्लेसमेंट को देखने के लिए उपयोगी है और वास्तव में लेबल कितना बड़ा है।

जवाबों:


260

आप लेबल की सीमा इसकी अंतर्निहित CALayer संपत्ति के माध्यम से सेट कर सकते हैं:

#import <QuartzCore/QuartzCore.h>

myLabel.layer.borderColor = [UIColor greenColor].CGColor
myLabel.layer.borderWidth = 3.0

स्विफ्ट 5:

myLabel.layer.borderColor = UIColor.darkGray.cgColor
myLabel.layer.borderWidth = 3.0

2
वे केवल एसडीके 3.0 शुरू करने के लिए उपलब्ध हैं :( यदि आप डिबगिंग उद्देश्य के लिए सिर्फ एक त्वरित समाधान चाहते हैं तो आप अपने लेबल के लिए अर्ध-रंगीन रंग की पृष्ठभूमि सेट कर सकते हैं।
व्लादिमीर

36
यदि कंपाइलर शिकायत करता है, तो आप शायद भूल गए#import <QuartzCore/QuartzCore.h>
स्टीफन अरेंटज़

1
@ व्लादिमीर यह समाधान सीमा को लेबल के सभी पक्षों से जोड़ रहा है। क्या हम सीमा को केवल लेबल के दाईं ओर जोड़ सकते हैं ???
चिन्तकद

1
@ अचिंतकद, नहीं। मुझे लगता है कि आपको उस समय के लिए कस्टम ड्राइंग के साथ कस्टम लेबल उपवर्ग की आवश्यकता होगी
व्लादिमीर

3
स्विफ्ट में पहली पंक्ति पढ़ेंगे:myLabel.layer.borderColor = UIColor.greenColor().CGColor
रोशाम्बो

71

यहां कुछ चीजें दी गई हैं जिनसे आप UILabelऔर इसकी सीमाओं के साथ कर सकते हैं ।

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

यहाँ उन लेबल के लिए कोड है:

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var label3: UILabel!
    @IBOutlet weak var label4: UILabel!
    @IBOutlet weak var label5: UILabel!
    @IBOutlet weak var label6: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        // label 1
        label1.layer.borderWidth = 1.0

        // label 2
        label2.layer.borderWidth = 5.0
        label2.layer.borderColor = UIColor.blue.cgColor

        // label 3
        label3.layer.borderWidth = 2.0
        label3.layer.cornerRadius = 8

        // label 4
        label4.backgroundColor = UIColor.cyan

        // label 5
        label5.backgroundColor = UIColor.red
        label5.layer.cornerRadius = 8
        label5.layer.masksToBounds = true

        // label 6
        label6.layer.borderWidth = 2.0
        label6.layer.cornerRadius = 8
        label6.backgroundColor = UIColor.yellow
        label6.layer.masksToBounds = true
    }
}

ध्यान दें कि स्विफ्ट में आयात करने की आवश्यकता नहीं है QuartzCore

यह सभी देखें


1
आप उन पैडिंग को कैसे प्राप्त कर सकते थे? मेरा पाठ सीमाओं को छू रहा है ...
eestein

1
@eestein, मुझे लगता है कि मैंने अभी इंटरफ़ेस बिल्डर में लेबल आकार को बड़ा किया है। या मैं उन पर आकार की बाधाओं को निर्धारित कर सकता हूं।
सुरगाछ

19

स्विफ्ट संस्करण:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.greenColor().CGColor

स्विफ्ट 3 के लिए:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor

1
यह होगाmyLabel.layer.borderColor = UIColor.blackColor().CGColor!
श्रुति

7

स्विफ्ट 3/4 @IBDesignable के साथ


जबकि उपरोक्त सभी समाधान ठीक काम करते हैं, लेकिन मैं एक सुझाव देना चाहूंगा @IBDesignable लिए कस्टम वर्ग का दूंगा।

@IBDesignable
class CustomLabel: UILabel {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
}

2

आप इस रेपो का उपयोग कर सकते हैं: GSBorderLabel

यह काफी सरल है:

GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
                                                     andBorderColor:anotherColor
                                                     andBorderWidth:2];

यह पाठ में वास्तविक पात्रों के चारों ओर सीमा से संबंधित है, सवाल यह है कि पाठ में निहित आयत के चारों ओर सीमाओं के बारे में बात की जा रही है।
jjxtra

1

यूफैबेल प्रॉपर्टी बॉर्डर, बॉर्डर, बॉर्डरविद, कार्नरियस स्विफ्ट 4 में

@IBOutlet weak var anyLabel: UILabel!
   override func viewDidLoad() {
        super.viewDidLoad()
        anyLabel.layer.borderColor = UIColor.black.cgColor
        anyLabel.layer.borderWidth = 2
        anyLabel.layer.cornerRadius = 5
        anyLabel.layer.masksToBounds = true
}

1

स्विफ्ट 4 के लिए समाधान:

yourLabel.layer.borderColor = UIColor.green.cgColor


0

यह वास्तव में इस बात पर निर्भर करता है कि आपके विचार में कितने बोर्डर का उपयोग किया जाता है, कभी-कभी, बस एक UIVIEW जोड़ें जो आकार सीमा बनाने के लिए थोड़ा बड़ा है। विधि एक दृश्य का उत्पादन करने की तुलना में तेज़ है


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