2014-10-02 11 views
15

Czy mogę użyć IB_DESIGNABLE i/lub IBInspectable do ustawienia layer.borderWidth i layer.borderColor w Interface Builder? Obecnie tworzę mój przycisk w kodzie, ale chciałbym móc ustawić to wszystko w IB, ale nie jestem pewien, czy te właściwości można ustawić w taki sposób w Xcode 6. Chciałbym zrobić to IBOutlet zamiast tego wszystkiego ustawić w kodzie. Oto mój kod przycisku.Ustaw szerokość warstwy granicznej UIButton i kolor w konstruktorze interfejsów

directions = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
directions.titleLabel.textAlignment = NSTextAlignmentCenter; 
directions.titleLabel.font = [UIFont fontWithName:@"FranklinGothicStd-ExtraCond" size:20.0]; 
[directions setTitle:@"Directions" forState:UIControlStateNormal]; 
[directions setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
directions.frame = CGRectMake(20, 178, 70, 70); 
directions.layer.borderWidth = 2.0f; 
directions.layer.borderColor = [UIColor whiteColor].CGColor; 
directions.clipsToBounds = YES; 
directions.backgroundColor = [UIColor clearColor]; 
[directions addTarget:self action:@selector(getDirections:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:directions]; 

ustawić te wartości zgodnie z sugestią i granicy nigdy nie jest pokazany w symulatorze. EDYCJA: Dowiedziałem się, dlaczego granica nie była wyświetlana podczas ustawiania tych wartości w IB. Kolor obramowania to CGColor, więc musiałem ustawić go w kodzie.

Odpowiedz

5

Można ustawić większość z tych, w konstruktora interfejsu dodawania atrybutów do środowiska wykonawczego elementów: enter image description here

Dla layer.borderWidth = 2.0f; będzie:

Wybierz przycisk i dodać nowy atrybut

keypath: layer.borderWidth

Typ: Liczba Wartość 2

Zmiany te nie będą widoczne wewnątrz konstruktora interfejsu, tylko w środowisku wykonawczym

+0

Dzięki. To pomaga, ale chcę wiedzieć o używaniu IBInspectable i IB_DESIGNABLE, aby efekty można było zobaczyć w IB. – raginggoat

+0

Próbowałem, a granica nie pojawia się. – raginggoat

+0

Musisz także ustawić borderColor, aby zobaczyć granicę – Istvan

3

Tak, można po prawej stronie kliknąć na inspektorze tożsamości, znajdziesz takiego enter image description here

kliknięcie + w User Defined Runtime Attributes

wybrać keypath i edytować go

napisać kod jak ten

layer.cornerRadius iw Type zmiany typu do number i ustawić ur wymaganej wartości tak

Możesz także zmieniać kolory tekstu i wiele innych.

Szczęśliwy kodowania

+0

Dzięki. To pomaga, ale chcę wiedzieć o używaniu IBInspectable i IB_DESIGNABLE, aby efekty można było zobaczyć w IB. – raginggoat

+0

I spróbowałem tego właśnie teraz, a granica nie pojawia się. – raginggoat

+0

musisz ustawić '[button.layer setMasksToBounds: YES];' – sreekanthk

27

Właściwie można ustawić pewne właściwości warstwy rzutem za pośrednictwem interfejsu Builder. Wiem, że mogę ustawić borderWidth i cornerRadius warstwy przez xcode. borderColor nie działa, prawdopodobnie dlatego, że warstwa chce CGColor zamiast UIColor.

Być może trzeba użyć ciągów zamiast cyfr, ale działa!

enter image description here

Ale można użyć do właściwości proxy kategorie takie jak layer.borderColor.(Z ConventionalC CocoaPod)

CALayer + XibConfiguration.h:

#import <QuartzCore/QuartzCore.h> 
#import <UIKit/UIKit.h> 

@interface CALayer(XibConfiguration) 

// This assigns a CGColor to borderColor. 
@property(nonatomic, assign) UIColor* borderUIColor; 

@end 

CALayer + XibConfiguration.m:

#import "CALayer+XibConfiguration.h" 

@implementation CALayer(XibConfiguration) 

-(void)setBorderUIColor:(UIColor*)color 
{ 
    self.borderColor = color.CGColor; 
} 

-(UIColor*)borderUIColor 
{ 
    return [UIColor colorWithCGColor:self.borderColor]; 
} 

@end 

Interface Builder

Wynik będzie oczywiste podczas wykonywania, nie w Xcode.

+1

Dla osób, które się na to natkną, jeśli chcesz wersję szybką, sprawdź: http://stackoverflow.com/a/27986696/130556 – RyanJM

+0

Wygląda na to, że możesz ustawić narożnikRadius z wartością liczby w atrybutach środowiska wykonawczego zdefiniowanej przez użytkownika z Xcode 7.3. –

+0

konfigurowanie tej porsy –

Powiązane problemy