Kha*_*war 84 swift swift-extensions
我想创建现有swift类的类别,但IDE中没有选项可以这样做.
知道swift项目中是否存在类别?或者如何在swift项目中实现类似的功能?
Cez*_*zar 126
在Swift中,您可以使用Extensions向现有类,结构和枚举类型添加新功能.
它们在几个方面与Objective-C类别不同,主要是:
就目前而言,Extensions可以:
声明扩展的基本语法如下:
extension SomeType {
// new functionality to add to SomeType goes here
}
Run Code Online (Sandbox Code Playgroud)
有关如何在Swift中使用Extensions的更多信息,请查看Apple的文档.
Sur*_*gch 99
在Objective C中,它们被称为类别,但在Swift中它们被称为扩展.它们的目的是为现有类提供附加功能,而无需创建子类.
我已经阅读了文档中的扩展,但在我观看本教程视频(YouTube版本,github源代码)之前,我并不真正理解如何在我的项目中使用它.
以下是有关如何操作的视频摘要.
右键单击Project Navigator并选择"New File ..."
选择"Swift文件"
惯例是将文件名保存为您正在扩展的类名(加上"+"符号),以便对其进行操作.例如,"UIImage + Cropping".
打开刚刚创建的新Swift文件.
如果要扩展,则应导入UIKit(而不是Foundation)UIView.然后extension在要扩展的类名之前使用关键字.然后,您可以将自己的新方法添加到类中.(注意,扩展名用于添加新方法,而不是覆盖现有方法 - 因此名称.)
在视频中,示例是添加一种方法,从图像中裁剪一个圆圈并为其赋予边框.
import UIKit
extension UIImage {
func cropToCircleWithBorderColor(color: UIColor, lineWidth: CGFloat) -> UIImage {
// code to create the cropped circle with colored border
return newImage
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获取完整示例.
现在,您可以在代码中的任何位置使用新方法,就像它是标准类的一部分一样.
这是视频的例子(在github上):
import UIKit
class ViewController: UIViewController {
@IBOutlet var imageView : UIImageView = nil
override func viewDidLoad() {
super.viewDidLoad()
let img = imageView.image
imageView.image = img.cropToCircleWithBorderColor(UIColor(red:0.91, green:0.34, blue:0.16, alpha:1.00), lineWidth: 20)
}
}
Run Code Online (Sandbox Code Playgroud)
该方法cropToCircleWithBorderColor不是标准的一部分UIImage,但正如您所看到的,它就像它一样使用.
| 归档时间: |
|
| 查看次数: |
58727 次 |
| 最近记录: |