使用CGSizeMake和CGSize之间的区别是什么?这个比那个好吗?

时间:2016-01-24 21:57:40

标签: ios swift cgfloat cgsize

CGSizeMake(360, 480)SELECT DISTINCT E.NAME, sum(T.distanceInKM/C.kmPerLitre) FROM Employe E, TravelCost T, CAR C GROUP BY T.distanceInKm,E.name,C.kmPerLitre HAVING SUM(distanceInKM) > 100; 似乎具有相同的效果。对另一个人更喜欢吗?有什么区别?

3 个答案:

答案 0 :(得分:11)

CGSize构造函数是CGSize上的Swift扩展名:

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"比另一方更方便。

答案 1 :(得分:2)

虽然作为功能它们没有任何区别,但{/ 1}}将被弃用。编写和阅读CGSizeMake()更容易,因此Apple希望您将来使用CGSize()

答案 2 :(得分: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
    
  3. 解释: -

    在这里的第一个案例即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
      
    3. 现在,在纯粹快速使用的情况下,代码CGSize()CGSizeMake()更简单易懂。你可以从上面的例子中得到它.. !!!!

      谢谢,

      希望这有帮助。