5

CGSize(width: 360, height: 480)CGSizeMake(360, 480)同様の効果があるようです。どちらが優先されますか?違いはなんですか?

4

3 に答える 3

11

コンストラクターは、次のCGSizeSwift 拡張CGSizeです。

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

CGSizeMakeObjective-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()

ただし、この 2 つの間の構造的およびプログラム上の違いについて話している場合は、コード スニペットの構造と説明も示します。

  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
    

純粋な迅速な使用の場合、コードCGSize()は よりもはるかに単純で理解しやすいものになりCGSizeMake()ました。上記の例からそれを得ることができます..!!!!

ありがとう、

これがお役に立てば幸いです。

于 2016-02-05T05:55:20.007 に答える