如何向UIButton添加属性?

时间:2016-08-23 06:29:45

标签: ios swift uibutton quartz-core

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

上添加属性

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

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

如何解决这个问题?

这是我的代码keyboardViewController.swift

导入UIKit

类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)
}

}

3 个答案:

答案 0 :(得分:1)

好像你试图“添加属性”而不是按钮,而是接受一个接受按钮作为参数的闭包。

像这样:

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

答案 1 :(得分:1)

如果您尝试使用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
}

如果您需要尽快应用样式,请尝试将此代码放入 viewDidLoad viewDidAppear 方法:

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

答案 2 :(得分:1)

我认为为了将一些样式应用于按钮,您需要一个这个按钮的插座。 现在,根据我的理解,您正在尝试将样式应用于从@IBAction到发送者的按钮,这不是正确的方法。 尝试在视图控制器中为按钮创建一个插座,然后从viewDidLoad方法中应用样式。

我希望这很清楚,但是如果你想要一个更具体的答案,你需要告诉我们你尝试了什么,例如粘贴你在视图控制器中的代码

修改 根据您发布的代码,键盘是您从loadInterface()实例化的Nib。只有这段代码,我对整个事物没有清晰的认识,但在我看来,你正在尝试将某些样式应用于键盘视图的每个键按钮。不幸的是,这实际上取决于键盘的实现方式,你能提供更多细节吗?

无论如何,从我看到的情况来看,我认为你没有编写这段代码:可能你正在学习教程或维护别人的代码。没关系,但是我建议你跟随一个使用Swift进行iOS开发的入门课程,就像Udacity的一个,这是很棒的恕我直言(https://www.udacity.com/course/intro-to-ios-app-development-with-swift--ud585