< p >
简短回答: 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()
是因为他们从旧的非Swift时代开始就习惯了它。Swift的初始化程序更具“Swift风格”,并且使用显式参数标签表达更清晰:
let rect = CGRect(x: x, y: x, width: w, height: h)
更新:从 Swift 3/Xcode 8 开始,CGRectMake
在 Swift 中已不再可用。