kolor ramki w dowolnym widoku (lub podklasie UIView) można również ustawić za pomocą scenorysu z odrobiną kodowania, a to podejście może być naprawdę przydatne, jeśli ustawiasz kolor obramowania na wielu obiektach interfejsu użytkownika.
Poniżej kroki jak to osiągnąć,
- Utwórz kategorię w klasie CALayer. Zadeklaruj właściwość typu UIColor z odpowiednią nazwą, nadam jej nazwę borderUIColor .
- Napisz setter i getter dla tej właściwości.
- W metodzie „Setter” wystarczy ustawić właściwość „borderColor” warstwy na nową wartość CGColor kolorów.
- W metodzie 'Getter' zwraca UIColor z wartością borderColor warstwy.
PS: Pamiętaj, kategorie nie mogą mieć przechowywanych właściwości. „borderUIColor” jest używana jako właściwość obliczeniowa, podobnie jak odniesienie do osiągnięcia tego, na czym się skupiamy.
Proszę spojrzeć na poniższy przykładowy kod;
Cel C:
Plik interfejsu:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (BorderProperties)
// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;
@end
Plik wdrożeniowy:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Swift 2.0:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.CGColor
}
get {
return UIColor(CGColor: self.borderColor!)
}
}
}
I na koniec przejdź do swojego storyboardu / XIB, wykonaj pozostałe kroki;
- Kliknij obiekt Widok, dla którego chcesz ustawić kolor obramowania.
- Kliknij „Identity Inspector” (trzeci od lewej) w panelu „Utility” (prawa strona ekranu).
- W sekcji „Atrybuty środowiska wykonawczego zdefiniowane przez użytkownika” kliknij przycisk „+”, aby dodać ścieżkę klucza.
- Ustaw typ ścieżki klucza na „Kolor”.
- Wprowadź wartość ścieżki klucza w postaci „layer.borderUIColor”. [Pamiętaj, że powinna to być nazwa zmiennej, którą zadeklarowałeś w kategorii, a nie borderColor, tutaj jest to borderUIColor ].
- Wreszcie wybierz dowolny kolor.
Musisz ustawić wartość właściwości layer.borderWidth na co najmniej 1, aby zobaczyć kolor obramowania.
Buduj i uruchamiaj. Miłego kodowania. :)