简短回答: CGRectMake 不是“由 Swift 提供的”。 CoreGraphics中对应的C函数
框架是自动导入的,因此在 Swift 中可用。
更长的答案:
CGRectMake 定义在
CoreGraphics 框架中的“CGGeometry.h”为
CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
}
在 (Objective-)C 中,该函数提供了一种方便的方法
初始化一个CGRect 变量:
CGRect r = CGRectMake(x, y, h, w);
Swift 编译器自动导入所有函数
Foundation 头文件(如果它们与 Swift 兼容),所以这个
导入为
public func CGRectMake(x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect
您可以使用那个,也可以使用 Swift 初始化程序之一
public init(origin: CGPoint, size: CGSize)
public init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
public init(x: Double, y: Double, width: Double, height: Double)
public init(x: Int, y: Int, width: Int, height: Int)
我认为这不会产生任何性能差异。很多人可能
使用 CGRectMake() 因为他们已经习惯了旧的 pre-Swift
次。 Swift 初始值设定项更“迅速”且更具表现力
显式参数标签:
let rect = CGRect(x: x, y: x, width: w, height: h)
更新:从 Swift 3/Xcode 8 起,CGRectMake 不再是
在 Swift 中可用。