Storyboard上でViewにプロジェクトで定義した色を指定する方法
6403 ワード
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の背景色が青になったら成功です。
- カラークラスを作成する。そして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の背景色が青になったら成功です。
Author And Source
この問題について(Storyboard上でViewにプロジェクトで定義した色を指定する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/k-yamada-github/items/db033695a0e15f23313e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .