如何将 属性 添加到 UIButton?
How to add property to UIButton?
感谢所有帮助:)!使用 iboutlet 集合修复它并在 viewDidLoad 上添加属性
我正在尝试向 layer.shadowColor
或 layer.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
}
如果您需要更快地应用样式,请考虑将此代码放入 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
我认为为了给按钮应用一些样式,你需要一个到这个按钮的出口。
现在,据我所知,您正在尝试将样式应用于从 @IBAction 到发件人的按钮,这不是正确的方法。
尝试为视图控制器中的按钮创建一个出口,然后从 viewDidLoad 方法中应用样式。
我希望这很清楚,但如果您想要更具体的答案,您需要向我们展示您的尝试,例如粘贴您在视图控制器中的代码
编辑:
根据您 post 的代码,键盘是您从 loadInterface() 实例化的 Nib。仅通过这段代码,我对整个事情没有清晰的认识,但在我看来,您正在尝试将某些样式应用于键盘视图的每个按键按钮。不幸的是,这实际上取决于键盘的实现方式,您能否提供更多详细信息?
无论如何,据我所知,我认为您没有编写此代码:您可能正在学习教程或维护其他人的代码。没关系,但我建议您学习 Swift 的 iOS 开发入门课程,就像 Udacity 的课程一样,恕我直言,这很棒 (https://www.udacity.com/course/intro-to-ios-app-development-with-swift--ud585)
感谢所有帮助:)!使用 iboutlet 集合修复它并在 viewDidLoad 上添加属性
我正在尝试向 layer.shadowColor
或 layer.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
}
如果您需要更快地应用样式,请考虑将此代码放入 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
我认为为了给按钮应用一些样式,你需要一个到这个按钮的出口。 现在,据我所知,您正在尝试将样式应用于从 @IBAction 到发件人的按钮,这不是正确的方法。 尝试为视图控制器中的按钮创建一个出口,然后从 viewDidLoad 方法中应用样式。
我希望这很清楚,但如果您想要更具体的答案,您需要向我们展示您的尝试,例如粘贴您在视图控制器中的代码
编辑: 根据您 post 的代码,键盘是您从 loadInterface() 实例化的 Nib。仅通过这段代码,我对整个事情没有清晰的认识,但在我看来,您正在尝试将某些样式应用于键盘视图的每个按键按钮。不幸的是,这实际上取决于键盘的实现方式,您能否提供更多详细信息?
无论如何,据我所知,我认为您没有编写此代码:您可能正在学习教程或维护其他人的代码。没关系,但我建议您学习 Swift 的 iOS 开发入门课程,就像 Udacity 的课程一样,恕我直言,这很棒 (https://www.udacity.com/course/intro-to-ios-app-development-with-swift--ud585)