Problem
- Storyboard上で、UILabelに独自に定義したUIColorを指定したい
Solution
- カラークラスを作成する。そしてcolorCodeからUIColorを取得するためのメソッドを定義しておく。
MyColor.swift
extension UIColor {
convenience public init(hex: Int, alpha: CGFloat = 1.0) {
let red = CGFloat((hex & 0xFF0000) >> 16) / 255.0
let green = CGFloat((hex & 0xFF00) >> 8) / 255.0
let blue = CGFloat((hex & 0xFF)) / 255.0
self.init(red:red, green:green, blue:blue, alpha:alpha)
}
}
public struct MyColor {
public static let Gray = UIColor(hex: 0x808080)
public static let RoyalBlue = UIColor(hex: 0x416931)
static func fromCode(code: String) -> UIColor {
switch code {
case "Gray" : return Gray
case "RoyalBlue" : return RoyalBlue
default:
return UIColor.whiteColor()
}
}
}
- カスタムLabelを作成し、
backgroundColorCode
とtextColorCode
をStoryboard上で指定できるようにする
MyLabel.swift
import UIKit
@IBDesignable
class MyLabel: UILabel {
@IBInspectable internal var backgroundColorCode: String = "" {
didSet {
backgroundColor = MyColor.fromCode(backgroundColorCode)
}
}
@IBInspectable internal var textColorCode: String = "" {
didSet {
textColor = MyColor.fromCode(textColorCode)
}
}
}
- StoryboardでUILabelを選択した状態でIdentity Inspectorを開き、Classを「MyLabel」にする
- Attribute Inspectorを開き、
BackgroundColorCode
を「RoyalBlue」にして、storyboardを保存する。 - Storyboard上でUILabelの背景色が青になったら成功です。