2015-07-21 13 views
10

Trong nhanh chóng tôi đang viết một phần mở rộng (như thể loại Obj-C) duy trì trong các phương thức lớp mã của "màu nhà". Tôi tự hỏi nếu có một cách để làm cho phần mở rộng màu này có thể truy cập để xây dựng giao diện bằng cách sử dụng IBInspectable hoặc cái gì khác như trái ngược với gắn màu sắc đặc biệt cho UIView subclasses như tôi đã thấy trong rất nhiều cách sử dụng mẫu IBInspector.Bảng màu toàn cầu cho bộ dựng giao diện

extension UIColor { 
    // house blue 
    @IBInspectable var houseBlue: UIColor { return UIColor(red:(51/255), green:(205/255), blue:(255/255), alpha:(1)) } 

    // house gray 
    @IBInspectable var houseGray: UIColor { return UIColor(white:0.4, alpha: 1) } 

    // house white 
    @IBInspectable var houseWhite: UIColor { return UIColor.whiteColor() } 
} 
+1

Điều này thật tuyệt vời! Nhưng tôi không thể hiểu được. Tuy nhiên, bạn có thể thêm một bảng màu tùy chỉnh bên trong Bộ dựng giao diện, nhưng tôi nghĩ rằng chúng chỉ có sẵn để sử dụng trong đó. –

+0

Bạn đang cố gắng chỉ sử dụng nó trong bảng phân cảnh nhưng không phải trong mã thực tế của bạn như 'UIView.backgroundColor = x'? –

+0

Cả hai, thực sự. @CodyWeaver – achi

Trả lời

3

Theo như tôi biết, bạn không thể programatically xác định màu sắc mà sau đó sẽ hiển thị trong giao diện Builder, nhưng bạn có thể mở rộng UIColor cho màu sắc tùy chỉnh để sử dụng trong mã của bạn:

extension UIColor { 

    static func myCustomColor() -> UIColor { 
    return UIColor(red: 23/255.0, green: 175/255.0, blue: 72/255.0, alpha: 1.0) 
    } 

} 

Và để tham chiếu màu tùy chỉnh:

myView.backgroundColor = UIColor.myCustomColor() 

Điều này không giải quyết được vấn đề của bạn, nhưng có thể tốt hơn là đặt màu sắc theo chương trình hơn thông qua IB. Nó sẽ cho phép bạn điều chỉnh giá trị một lần trong mã để thay đổi màu trong suốt ứng dụng thay vì phải điều chỉnh nó nhiều lần cho mỗi phần tử giao diện người dùng thông qua Trình tạo giao diện.

Các vấn đề liên quan