2010-02-22 13 views

Odpowiedz

232

Można ustawić granicę etykiety poprzez jego podstawowych właściwości CALayer:

#import <QuartzCore/QuartzCore.h> 

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

Kompilator skarży się, że nie ma definicji borderColor i borderWidth w obrębie CALayer. – Boon

+2

są dostępne tylko począwszy od SDK 3.0 :(Jeśli chcesz tylko szybkie rozwiązanie do debugowania możesz ustawić półprzezroczyste kolorowe tło dla swojej etykiety – Vladimir

+36

Jeśli kompilator narzeka, to prawdopodobnie zapomniałeś '#import ' –

2

Można użyć tego repo: GSBorderLabel

Jest to dość prosta:

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

Dotyczy to obramowania wokół rzeczywistych znaków w tekście , chodzi o granice wokół prostokąta, w którym jest zawarty tekst. – jjxtra

0

to naprawdę zależy od tego, ile W twoim widoku użyj interakcji, czasem dodaj tylko UIVIEW, którego rozmiar jest nieco większy, aby stworzyć granicę. metoda jest szybsza niż produkować rzutem

15

wersję SWIFT:

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

Dla Swift 3:

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

będzie to "myLabel.layer.borderColor = UIColor.blackColor(). CGColor!' – Shruti

+0

dziękuję, zredagowałem odpowiedź – Esqarrouth

56

Oto kilka rzeczy, które możesz zrobić z UILabel i jej granic.

enter image description here

Oto kod dla tych etykiet:

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

Należy zauważyć, że w Swift nie ma potrzeby importowania QuartzCore.

Zobacz także

+1

Jak udało ci się uzyskać te paddings? Mój tekst dotyka granic ... – eestein

+1

@eestein, Myślę, że właśnie przeciągnąłem większy rozmiar etykiety w programie Interface Builder. Lub mógłbym ustawić ograniczenia rozmiaru na nich. – Suragch

1

Swift 3/4 z @IBDesignable


Chociaż prawie wszystkie powyższe rozwiązania działają dobrze, ale chciałbym zaproponować klasę @IBDesignable niestandardową dla tego produktu.

@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 
     } 
    } 
} 
Powiązane problemy