如何将 属性 添加到 UIButton?

How to add property to UIButton?

感谢所有帮助:)!使用 iboutlet 集合修复它并在 viewDidLoad 上添加属性

我正在尝试向 layer.shadowColorlayer.shadowRadius 等键盘键添加属性。 我收到一个错误

 'Value of type '(UIButton)' -> () has no member 'layer'

如何解决这个问题?

这是我的代码keyboardViewController.swift

导入 UIKit

class KeyboardViewController: UIInputViewController { var newKeyboardView: UIView!

@IBAction func keyPressed(sender: UIButton) {

}

@IBOutlet var nextKeyboardButton: UIButton!

override func updateViewConstraints() {
    super.updateViewConstraints()

    // Add custom view sizing constraints here
}

override func viewDidLoad() {
    super.viewDidLoad()

    loadInterface()

}

func loadInterface() {
    // load the nib file
    let keyboardNib = UINib(nibName: "newKeyboard", bundle: nil)
    // instantiate the view
    newKeyboardView = keyboardNib.instantiateWithOwner(self, options: nil)[0] as! UIView

    // add the interface to the main view
    view.addSubview(newKeyboardView)

    // copy the background color
    view.backgroundColor = newKeyboardView.backgroundColor
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated
}

override func textWillChange(textInput: UITextInput?) {
    // The app is about to change the document's contents. Perform any preparation here.
}

override func textDidChange(textInput: UITextInput?) {
    // The app has just changed the document's contents, the document context has been updated.

    var textColor: UIColor
    let proxy = self.textDocumentProxy
    if proxy.keyboardAppearance == UIKeyboardAppearance.Dark {
        textColor = UIColor.whiteColor()
    } else {
        textColor = UIColor.blackColor()
    }
    self.nextKeyboardButton.setTitleColor(textColor, forState: .Normal)
}

}

似乎您尝试 "add property" 不是按钮,而是接受按钮作为参数的闭包。

像这样:

nextKeyboardButton.layer.shadowColor = UIColor.redColor.cgColor
nextKeyboardButton.layer.shadowRadius = 5.0

如果您尝试使用 QuartzCore 框架格式化您的 UIButton,您需要先导入它:

import QuartzCore

然后您就可以访问这些成员了。

例如(最新的swift3代码):

@IBAction func keyPressed(sender: UIButton) {
    let button = sender as UIButton!
        button?.backgroundColor = UIColor.red
        button?.layer.shadowColor = UIColor.black.cgColor
        button?.layer.shadowRadius = 1.0
        button?.layer.cornerRadius = 4.0
}

如果您需要更快地应用样式,请考虑将此代码放入 viewDidLoadviewDidAppear 方法中:

    self.nextKeyboardButton.backgroundColor = UIColor.red
    self.nextKeyboardButton.layer.shadowColor = UIColor.black.cgColor
    self.nextKeyboardButton.layer.shadowRadius = 1.0
    self.nextKeyboardButton.layer.cornerRadius = 4.0

我认为为了给按钮应用一些样式,你需要一个到这个按钮的出口。 现在,据我所知,您正在尝试将样式应用于从 @IBAction 到发件人的按钮,这不是正确的方法。 尝试为视图控制器中的按钮创建一个出口,然后从 viewDidLoad 方法中应用样式。

我希望这很清楚,但如果您想要更具体的答案,您需要向我们展示您的尝试,例如粘贴您在视图控制器中的代码

编辑: 根据您 post 的代码,键盘是您从 loadInterface() 实例化的 Nib。仅通过这段代码,我对整个事情没有清晰的认识,但在我看来,您正在尝试将某些样式应用于键盘视图的每个按键按钮。不幸的是,这实际上取决于键盘的实现方式,您能否提供更多详细信息?

无论如何,据我所知,我认为您没有编写此代码:您可能正在学习教程或维护其他人的代码。没关系,但我建议您学习 Swift 的 iOS 开发入门课程,就像 Udacity 的课程一样,恕我直言,这很棒 (https://www.udacity.com/course/intro-to-ios-app-development-with-swift--ud585)