Search code examples
uikitswift3xcode8ios10

CGRectMake, CGPointMake, CGSizeMake, CGRectZero, CGPointZero is unavailable in Swift


After converting code to latest swift 3.0 I am shown this error.

enter image description hereenter image description here

Also tell me solution for CGSize = CGSizeMake(0,0)

static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero

Which is also unavailable.


Solution

  • CGRect Can be simply created using an instance of a CGPoint or CGSize, thats given below.

    let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 100, height: 100))  
    
    // Or
    
    let rect = CGRect(origin: .zero, size: CGSize(width: 100, height: 100))
    

    Or if we want to specify each value in CGFloat or Double or Int, we can use this method.

    let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int
    

    CGPoint Can be created like this.

     let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int
    

    CGSize Can be created like this.

    let size = CGSize(width: 100, height: 100) // CGFloat, Double, Int
    

    Also size and point with 0 as the values, it can be done like this.

    let size = CGSize.zero // width = 0, height = 0
    let point = CGPoint.zero // x = 0, y = 0, equal to CGPointZero
    let rect = CGRect.zero // equal to CGRectZero
    

    CGRectZero & CGPointZero replaced with CGRect.zero & CGPoint.zero in Swift 3.0.