我有一個名爲UIElements.swift
的文件,其中包含我想在整個應用中使用的一些擴展名。Swift擴展類功能只能在1個文件中工作
到目前爲止他們工作得很好。直到我創建了一個新的viewController,並且我無法讓它們中的任何一個在我或者其他任何viewControllers中工作。他們只在我的第一個viewController?
這裏是爲擴展名的文件中的代碼:
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
加到班裏,沒有做任何事。
任何人都可以解釋爲什麼這個函數在一個文件中工作,但不是另一個?
您是否嘗試將公共擴展名添加到擴展中? – 2015-03-03 11:53:46
是啊,如在第二行最後一行:)也試過內部,這沒有結果。 – MLyck 2015-03-03 13:22:34