2016-08-09 3 views
1

私は迅速です。迅速にカテゴリを作成するために取り組んでいます。 UIColorのカテゴリを1つ作成しました。私は他のクラスでこれを呼び出す必要があります。現在、私はこれを呼びますスイフトでのカテゴリの使用と異なるクラスでの使用

messageview.backgroundColor = UIColor(hexaString: "31D433") 

しかし、それはエラーを起こします。

あなたがグローバルスコープに配置された拡張子を使用する迅速で
class Colorextension: UIColor { 
    convenience init(hexaString:String) { 
     self.init(
      red: CGFloat(strtoul(String(Array(hexaString.characters)[1...2]), nil, 16))/255.0, 
      green: CGFloat(strtoul(String(Array(hexaString.characters)[3...4]), nil, 16))/255.0, 
      blue: CGFloat(strtoul(String(Array(hexaString.characters)[5...6]), nil, 16))/255.0, alpha: 1) 
    } 
} 

答えて

2

:今

extension UIColor { 
    convenience init?(hexaString:String) { 
     if hexaString.characters.count < 6 {return nil} 
     self.init(
      red: CGFloat(strtoul(String(Array(hexaString.characters)[0...1]), nil, 16))/255.0, 
      green: CGFloat(strtoul(String(Array(hexaString.characters)[2...3]), nil, 16))/255.0, 
      blue: CGFloat(strtoul(String(Array(hexaString.characters)[4...5]), nil, 16))/255.0, alpha: 1) 
    } 
} 

messageview.backgroundColor = UIColor(hexaString: "31D433")は動作するはずです。

更新

は(私はそれらを修正)間違った範囲を使用します、そして、あなたはおそらく、入力文字列が間違った形式を持っているとき場合のfailable初期化子を記述する必要があります。

+0

どこにこの拡張子を置く必要がありますか?新しい拡張子ファイルを作成する必要があります。 –

+0

@ bal-iphoneと同じクラスで動作するはずです。この拡張子をグローバルスコープに置く必要があります。あなたのプロジェクトで空の.swiftファイルをこのコードだけで作成するか、他の既存の.swiftファイルを使用してこのコードをこのファイルのクラスの外に置くことができます –

+1

ありがとうございます –

関連する問題