5

CGSize(width: 360, height: 480)并且CGSizeMake(360, 480)似乎具有相同的效果。一个比另一个更受欢迎吗?有什么区别?

4

3 回答 3

11

构造CGSize函数是一个 Swift 扩展CGSize

extension CGSize {
    public static var zero: CGSize { get }
    public init(width: Int, height: Int)
    public init(width: Double, height: Double)
}

CGSizeMake是从 Objective-C 桥接的剩余内联函数:

/*** Definitions of inline functions. ***/

// ...

public func CGSizeMake(width: CGFloat, _ height: CGFloat) -> CGSize

两者在 Swift 中具有相同的功能,CGSize构造函数只是比另一个更“Swifty”并且提供方便。

于 2016-01-24T22:00:47.353 回答
2

虽然作为功能它们没有任何区别,但CGSizeMake()现在/将被弃用。它更易于书写和阅读CGSize(),因此 Apple 更喜欢您CGSize()在未来使用。

于 2016-01-24T22:07:20.130 回答
1

因此,如果您在谈论可用性方面的差异,那么CGSize()和之间没有基本区别CGSizeMake()

但是,如果您在谈论这两者之间的结构和程序差异,那么这里还有一些代码片段结构和解释。

  1. CGSize()

    struct CGSize { var width: CGFloat var height: CGFloat init() init(width width: CGFloat, height height: CGFloat) }
    
  2. CGSizeMake()

    func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize
    

解释:-

在第一种情况下CGSize(),代码清楚地表明它是一个结构,通常将高度和宽度作为CGFloat()并表示距离向量而不是物理大小。作为向量,该值可能为负数。

另一方面,在 的情况下CGSizeMake(),我们可以很容易地理解它是一个函数而不是一个结构。它通常将高度和宽度作为CGFloat()并返回一个CGSize()结构。

示例:-

  1. CGSize()

    var sizeValue = CGSize(width: 20, height: 30) //Taking Width and Height
    
  2. CGSizeMake()

    var sizeValue = CGSizeMake(20,30) //Taking Width and Height too but without named parameters
    

现在在纯 swift 使用和代码的情况下CGSize()CGSizeMake(). 你可以从上面的例子中得到正确的..!!!!

谢谢,

希望这有帮助。

于 2016-02-05T05:55:20.007 回答