Câu trả lời ngắn:CGRectMake
không được "cung cấp bởi Swift". Hàm C tương ứng trong khung công tác CoreGraphics được nhập tự động và do đó có sẵn trong Swift. câu trả lời
dài: CGRectMake được định nghĩa trong "CGGeometry.h" từ khuôn khổ CoreGraphics như
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;
}
In (Objective-) C, chức năng cung cấp một cách thuận tiện để khởi tạo một CGRect
biến:
CGRect r = CGRectMake(x, y, h, w);
Trình biên dịch Swift tự động nhập tất cả các chức năng từ tập tin tiêu đề Foundation (nếu họ là Swift-tương thích), vì vậy này được nhập khẩu như
public func CGRectMake(x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect
Bạn có thể sử dụng một hoặc một trong những initializers 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)
Tôi không nghĩ rằng nó làm cho bất kỳ sự khác biệt hiệu suất. Nhiều người có thể sử dụng CGRectMake()
vì họ đã quen với số này từ số cũ trước Swift lần. Initializers Swift có nhiều "Swifty" và biểu cảm hơn với nhãn lập luận rõ ràng:
let rect = CGRect(x: x, y: x, width: w, height: h)
Cập nhật: Tính đến Swift 3/Xcode 8,CGRectMake
không còn sẵn trong Swift .