2016-12-09 11 views
0

ここでは、コントロールのボタン初期化コードを入力します。 ViewController.swiftでは正しく動作しませんか?ボタンが押された後ではなく、ただちに初期化する必要があるからです。Swift 3初期化ボタン

たとえば、ボタンの角を丸くしたいとします。

@IBAction func buttonAdd(_ sender: AnyObject) { 
    let button = buttonAdd! 

    button.backgroundColor = UIColor.cyan 

    // button.backgroundColor = .clear 
    button.layer.cornerRadius = 15 
    button.layer.borderWidth = 1 
    button.layer.borderColor = UIColor.black.cgColor 
} 

しかし、このlet文は関数の外では機能しません。 関数に初期コードを入れる必要はありますか? どこから関数を呼び出しますか?

答えて

1

「ボタン追加」はボタンではなく機能です。

このコードを試してください。

if let button = sender as? UIButton 
    { 
     button.backgroundColor = UIColor.cyan 

     // button.backgroundColor = .clear 
     button.layer.cornerRadius = 15 
     button.layer.borderWidth = 1 
     button.layer.borderColor = UIColor.black.cgColor 
    } 

だから、あなたはroundedCornerとの国境で、ボタンを初期化します。

View Controllerのライフサイクルで一度だけ呼び出される 'viewDidLoad'関数があります。 何かしたいことがある場合は、 'viewDidLoad'関数で行います。

override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     let btn = UIButton(type: .custom) 
     btn.frame = .init(x: 100, y: 100, width: 100, height: 30) 
     btn.setTitle("Hello", for: .normal) 
     btn.backgroundColor = UIColor.cyan 
     btn.layer.cornerRadius = 15 
     btn.layer.borderColor = UIColor.black.cgColor 
     btn.layer.borderWidth = 1 

     // you must call this for rounded corner 
     btn.layer.masksToBounds = true 
     self.view.addSubview(btn) 
    } 

Interface Builderでボタンを作成した場合は、このようにすることができます。

@IBOutlet weak var btn: UIButton! 
override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    btn.layer.cornerRadius = 15 
    btn.layer.borderColor = UIColor.black.cgColor 
    btn.layer.borderWidth = 1 

    // you must call this for rounded corner 
    btn.layer.masksToBounds = true 
} 
+0

私はbuttonAddが関数であることを認識していますが、ボタンのAction関数であるため、ボタンが押されるまでヒットすることはありません。明らかにその機能の外に存在しなければならない。もう一度私はコールまたは関数にinitコードを入れなければならないのですか?私には分かりませんが、Swiftのプロパティ名やEquivalentsはどこにあるのですか?名前プロパティがなければ、どのようにコントロールをグローバルに参照できますか? – ot1

0

私はあなたがViewController.Swiftでボタンの初期化コードを置く...ビューコントローラによって自動的に作成された以下の機能に...私の質問への答えを見つけ、あなたがボタンに加えて、ボタンのアウトレットを追加する必要がありますアクション。

override func viewDidLoad() { 
    super.viewDidLoad() 

    let button = buttonAdd! 

    button.backgroundColor = UIColor.cyan 

    // button.backgroundColor = .clear 
    button.layer.cornerRadius = 10 
    button.layer.borderWidth = 1 
    button.layer.borderColor = UIColor.black.cgColor 
関連する問題