Krótka odpowiedź:CGRectMake
nie jest "dostarczony przez Swift". Odpowiednia funkcja C w strukturze CoreGraphics jest automatycznie importowana i dlatego dostępna w Swift.
Dłuższą: CGRectMake jest zdefiniowana w "CGGeometry.h" w ramach CoreGraphics jak
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;
}
W (Objective-) C, to funkcja zapewnia wygodny sposób zainicjować CGRect
zmienna:
CGRect r = CGRectMake(x, y, h, w);
Kompilator Swift automatycznie importuje wszystkich funkcji z plików nagłówkowych Foundation (jeśli są one Swift-compatible), więc ta jest importowany jako
public func CGRectMake(x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect
można użyć, że jeden, lub jeden z inicjalizatorów 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)
Nie sądzę, żeby to miało jakikolwiek wpływ na wydajność. Wiele osób może użyć CGRectMake()
, ponieważ są przyzwyczajeni do tego ze starych czasów pre-Swift . W inicjalizatory Swift są bardziej "Swifty" i bardziej wyraziste z jawne etykiety Argument:
let rect = CGRect(x: x, y: x, width: w, height: h)
Aktualizacja: Od Swift 3/Xcode 8CGRectMake
nie jest już dostępny w Swift .