UILabel çevresine nasıl sınır çizilir?


140

UILabel'in çevresine bir kenarlık çizmesinin bir yolu var mı? Bu, metin yerleşimi hatalarını ayıklamak ve yerleşimi ve etiketin gerçekte ne kadar büyük olduğunu görmek için kullanışlıdır.

Yanıtlar:


260

Etiketin kenarlığını altta yatan CALayer özelliği ile ayarlayabilirsiniz:

#import <QuartzCore/QuartzCore.h>

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

Hızlı 5:

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

2
yalnızca SDK 3.0'dan başlayarak kullanılabilirler :( Hata ayıklama amacıyla hızlı bir çözüm istiyorsanız, etiketiniz için yarı saydam renkli arka plan ayarlayabilirsiniz.
Vladimir

36
Derleyici şikayet ederse muhtemelen unuttun#import <QuartzCore/QuartzCore.h>
Stefan Arentz

1
@Vladimir Bu çözüm, etiketin tüm kenarlarına kenarlık ekliyor. Kenarlığı, etiketin yalnızca sağ tarafına ekleyebilir miyiz ???
chinthakad

1
@chinthakad, hayır. Bunun için özel çizim ile özel etiket alt sınıfına ihtiyacınız olacağını düşünüyorum
Vladimir

3
Swift'te ilk satır şöyle olurdu:myLabel.layer.borderColor = UIColor.greenColor().CGColor
Roshambo

71

İşte yapabileceğiniz bazı şeyler UILabelve sınırları.

resim açıklamasını buraya girin

İşte bu etiketlerin kodu:

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
    }
}

Swift'te içe aktarmaya gerek olmadığını unutmayın QuartzCore.

Ayrıca bakınız


1
Bu dolguları nasıl alabildin?
Metnim

1
@eestein, sanırım Arayüz Oluşturucu'da etiket boyutunu daha büyük sürükledim. Ya da üzerlerinde boyut kısıtlamaları ayarlamış olabilirim.
Suragch

19

Hızlı sürüm:

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

Swift 3 için:

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

1
olacakmyLabel.layer.borderColor = UIColor.blackColor().CGColor!
Shruti

7

@IBDesignable ile Swift 3/4


Yukarıdaki çözümlerin neredeyse tamamı iyi çalışırken, ancak bunun için @IBDesignableözel bir sınıf öneririm .

@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

Bu repo'yu kullanabilirsiniz: GSBorderLabel

Oldukça basit:

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

Bu, metindeki gerçek karakterlerin etrafındaki kenarlıkla ilgilidir, soru metnin içerdiği dikdörtgenin etrafındaki kenarlıklar hakkında konuşuyor.
jjxtra

1

Swift 4'te UILabel özellikleri borderColor, borderWidth, cornerRadius

@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

Swift 4 için çözüm:

yourLabel.layer.borderColor = UIColor.green.cgColor


0

gerçekten görünümünüzde kaç yatılı kullandığınıza bağlıdır, bazen, sadece kenarlığı oluşturmak için boyutun biraz daha büyük olduğu bir UIVIEW ekleyin. yöntem bir görünüm oluşturmaktan daha hızlı


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.