2016-12-09 149 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語句不會在函數之外工作。 我是否需要將init代碼放入函數中? 我從哪裏調用函數?

回答

1

'buttonAdd'是一個函數,而不是一個按鈕。

試試這個代碼。

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和邊框的按鈕。

有一個'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是一個函數,但是它的一鍵操作功能,因此它不會受到打擊,直到按下一個按鈕,所以我應該把初始化代碼的按鈕。它顯然必須在該功能之外。我還需要將init代碼放入一個調用或函數中嗎?而其他不清楚的東西是屬性.Name或它在Swift中的等價位置。如果沒有名稱屬性,您如何才能在全球範圍內引用控件 – 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