Mam podklasę o nazwie UIView
o nazwie MyView
, którą tworzę.Korzystanie z IBDesignable i prepareForInterfaceBuilder z UILabelem
Jest w nim UILabel
(kod ten nie jest dodawany w InterfaceBuilder z powodów).
Mam nieruchomość pod numerem MyView
o nazwie color
.
Chciałbym, aby Konstruktor interfejsów mógł wybrać color
, a następnie wyświetlić etykietę z zestawem czcionek dla tego koloru.
W moim kodu mam ...
@IBDesignable class MyView: UIView {
private let textLabel = UILabel()
@IBInspectable var color: UIColor = .blackColor() {
didSet {
textLabel.textColor = color
}
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialSetup()
}
override init(frame: CGRect) {
super.init(frame: frame)
initialSetup()
}
private func initialSetup() -> Void {
self.backgroundColor = .clearColor()
textLabel.textAlignment = .Center
textLabel.numberOfLines = 0
addSubview(textLabel)
}
override func layoutSubviews() {
super.layoutSubviews()
textLabel.frame = bounds
}
// I have no idea what I'm doing here?!
override func prepareForInterfaceBuilder() {
// should I create a label specifically for here?
// or should I use the property textLabel?
textLabel.text = "Hello, world!" // setting place holder IB text?
textLabel.textColor = color
textLabel.font = .systemFontOfSize(21)
textLabel.textAlignment = .Center
textLabel.numberOfLines = 0
// do I need to add sub view?
}
}
IBInspectable
W IB widzę właściwość color tam i mogę go ustawić. Irytowanie przyjmuje domyślną wartość .clearColor(), ale nie jest to kolor ustawiony w kodzie. Czy istnieje sposób, aby to naprawić?
IBDesignable
Kiedy kładę wgląd InterfaceBuilder pokazuje wszystkie właściwości podlegającej inspekcji, ale nic nie jest pokazany w rzeczywistym widoku.
Po uruchomieniu wszystko działa poprawnie. Chciałbym móc uzyskać coś działającego (poza drawRect) w IB. Zauważam jednak wyraźny brak dokumentacji.
Edycja - Ostrzeżenia
Właśnie zauważyłem, że jestem coraz zbudować błędy/ostrzeżenia mówiąc ...
ostrzeżenie: IB Designables: Zignorowanie zdefiniowany przez użytkownika atrybut kluczowy dla wykonania ścieżki „color "na przykład z" UIView ". Wystąpił wyjątek podczas próby ustawienia jego wartości: [setValue: forUndefinedKey:]: ta klasa nie jest zgodna z kodowaniem kluczem kluczowym dla koloru klucza.
ta prawdopodobnie ulegnie zmianie rozwiązanie :)
Cóż, obecnie dostaję "Usterkę Segmentacji: 11", gdy próbuję uruchomić, więc nie mam pojęcia, co się dzieje. To może być przyczyną tego. Cieszę się, że mam właściwy kod. Zainstalowałem Xcode 4 (powody) dzisiaj, więc zastanawiam się, czy ta instalacja pomieszała kompilatory czy coś ?! W każdym razie dzięki. Zatrzymam projekt Swift: D – Fogmeister
OMLG! Błąd seg został spowodowany tym, że użyłem '.clearColor()' w atrybucie zamiast 'UIColor.clearColor()', ale w kodzie nie było żadnych błędów. W każdym razie wszystko działa: D! – Fogmeister