感谢所有帮助:)!使用iboutlet集合修复它并在viewDidLoad
上添加属性我正在尝试为layer.shadowColor
或layer.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)
}
}
答案 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)