2017-02-04 5 views
2

にUIButton setBorderColorを設定します。スウィフトは、私はストーリーボードにUIButton境界線の色を設定しようとしているストーリーボード

Set button color

しかし、ボタンはまだ黒です。 layer.borderColorを使用しようとすると、境界線がまったく表示されません。

どのように色を使用しますか? にストーリーボードカスタムクラスに設定した後

import Foundation 
import UIKit 

@IBDesignable 

public class OnboardingButton: UIButton { 
    @IBInspectable public var borderColor:UIColor? { 
     didSet { 
      layer.borderColor = borderColor?.cgColor 
     } 
    } 
    @IBInspectable public var borderWidth:CGFloat = 0 { 
     didSet { 
      layer.borderWidth = borderWidth 
     } 
    } 
    @IBInspectable public var cornerRadius:CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
      layer.masksToBounds = newValue > 0 
     } 
    } 
} 

は私が@dfdに基づいて設定する方法を変更した//あなたUPDATE

をありがとう* OnboardingButtonアプリがビルドを開始しましたが、Faieldを開始しました。ログにエラーはありません。どこでエラーを見つけて修正することができますか?

+0

あなたはUIButtonにIBDesignableを作ったようにこれが見えます。 IBInspectableを作成しましたか?そして、私たちは簡単にこれをデバッグすることができます - あなたのコードを見せてください! – dfd

+0

UIButtonの色はCGColorを取るので、サブクラスで行う方がよい。 – Hasya

答えて

3

ここに私のUIButtonのサブクラスです:

@IBDesignable 
public class Button: UIButton { 
    @IBInspectable public var borderColor:UIColor? { 
     didSet { 
      layer.borderColor = borderColor?.cgColor 
     } 
    } 
    @IBInspectable public var borderWidth:CGFloat = 0 { 
     didSet { 
     layer.borderWidth = borderWidth 
     } 
    } 
    @IBInspectable public var cornerRadius:CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
      layer.masksToBounds = newValue > 0 
     } 
    } 
} 

はEDIT:

私は単純なプロジェクトを作成し、上記IBDesignableサブクラスを追加しました。以下は結果の3つのスクリーンショットです。アイデンティティ・インスペクタでは、クラスをUIButtonではなくButtonに設定し、Designablesが「最新」であることを報告していることに注意してください。 Attributesインスペクタでは、これらのプロパティは一番上にプロパティとして表示されます。

Identity inspector Attributes inspector Storyboard snapshot

+0

私はそれを使用しようとしていますが、私はstilですDesignables:ビルドが失敗しました。あなたは何が起こったのか考えていますか? – David

+0

'IBDesignable'の下にある空白行を除いて、それは同じように見えます。私の唯一の質問はビルドエラーに関連していません。ログの代わりに、Issue Navigatorをチェックしましたか? Xcodeの左にある4番目のボタンです。 – dfd

+0

警告のみが表示されますが、エラーはありません – David

0

UIButtonフォームインターフェイスビルダの一部のプロパティは変更できますが、境界線の色は変更できません。別の方法は、dfdによって提案された答えのようにサブクラス化することです。

関連する問題