我有一个名为UIElements.swift
的文件,其中包含我想在整个应用中使用的扩展程序。
这是扩展程序文件的代码:
import UIKit
extension UIImage {
//create image from UIColor, to use for buttons
class func imageWithColor(color:UIColor?) -> UIImage! {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0);
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
let context = UIGraphicsGetCurrentContext();
if let color = color {
color.setFill()
}
else {
UIColor.whiteColor().setFill()
}
CGContextFillRect(context, rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
}
显然我在文件中有更多的扩展名,但是当我注意到它没有用时,这是我试图先调用的函数。
以下代码在名为Login_VC.swift
import UIKit
class LoginVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var signInButton = UIButton()
signInButton.setTranslatesAutoresizingMaskIntoConstraints(false)
signInButton.setTitle("SIGN IN", forState: .Normal)
signInButton.titleLabel!.font = UIFont(name: "BebasNeue-Bold", size: 50)
signInButton.setBackgroundImage(UIImage.imageWithColor(UIColor.colorWithHex("#12D99E")), forState: .Normal)
self.view.addSubview(signInButton)
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
上面的代码返回以下错误:
'UIImage.Type' does not have a member named 'imageWithColor'
这是我在第一个视图控制器中调用LandingPageVC.swift
的类似按钮(此代码工作正常)
import UIKit
class LandingPageVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var signUpButton: UIButton = UIButton()
signUpButton.setTranslatesAutoresizingMaskIntoConstraints(false)
signUpButton.setTitle("Sign Up Today", forState: .Normal)
signUpButton.titleLabel!.font = UIFont(name: "BebasNeue-Bold", size: 50)
signUpButton.setBackgroundImage(UIImage.imageWithColor(UIColor.colorWithHex("#12D99E")), forState: .Normal)
signUpButton.setBackgroundImage(UIImage.imageWithColor(UIColor.colorWithHex("#0DB07F")), forState: .Highlighted)
signUpButton.layer.shadowColor = formulaShadowColor.CGColor
signUpButton.layer.shadowOffset = CGSizeMake(3, 3)
signUpButton.layer.shadowRadius = 0
signUpButton.layer.shadowOpacity = 1.0
signUpButton.addTarget(self, action: "signUp:", forControlEvents: .TouchUpInside)
signUpButton.addTarget(self, action: "signUpHighlighted:", forControlEvents: .TouchDown)
signUpButton.addTarget(self, action: "signUpReset:", forControlEvents: .TouchDragExit)
self.view.addSubview(signUpButton)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我无法在任何一个档案中看到我做过的任何事情。
当我开始写UIImage.i
- >它在第一个视图控制器中建议imageWithColor
,但它不会显示在任何其他文件中。
我没有做任何事情来在这两个文件中导入这个类。由于它只是UIImage
的扩展名,因此应使用UIKit
导入。
我也尝试在课堂上添加public
,但没有做任何事情。
任何人都可以解释为什么这个函数在一个文件中工作,而不是另一个文件?
答案 0 :(得分:1)
您是否尝试过清理项目(Command-Option-Shift-K)?清理项目会清空Xcode缓存。更好的方法是退出项目并手动清除~/Library/Developer/Xcode/DerivedData
。确保删除此文件夹中的所有内容,因为错误可以缓存在任何文件中。
答案 1 :(得分:0)
我向苹果发送了一个关于此
的错误报告因为这个问题已经有一段时间未被触及了。我最终创建了一个新项目并将我的文件复制过来。它现在正在工作。仍然不知道为什么它无法工作。文件相同,结构相同,名称相同,目标相同。