Swift3にアップデートしたらCGRectMakeが使えず、'CGRectMake' is unavailable in Swiftとエラーが出るようになった。


スポンサーリンク

XCodeをUpdateしてから、本に書いてあるサンプルのほとんどが陳腐化してしまった。
CGRectMakeという、座標を指定する関数が使えなくなっていた。

「'CGRectMake' is unavailable in Swift」というエラーが出るようになってしまったのだ。
このエラーに対応するには、CGRectをWrapする関数を作ればよい。


http://stackoverflow.com/questions/30692096/using-variables-in-cgrectmake-swift-uikit

func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
    return CGRect(x: x, y: y, width: width, height: height)
}

これを使って、Labelを移動させたりLabelを作る処理を買いてみる。

//関数名は変になったすまん。clickMoveが適切
@IBAction func clickMake(_ sender: AnyObject) {

    let rect = CGRectMake(
        labelMove.frame.origin.x,
        labelMove.frame.origin.y + 30,
        labelMove.frame.width + 50,
        labelMove.frame.height + 30)
    labelMove.frame = rect
    labelMove.text = "move label"
    
}

@IBAction func clickCreate(_ sender: AnyObject) {
    let label = UILabel()
    let rect = CGRectMake(
        100,
        100,
        150,
        30)
    label.frame = rect
    label.text = "create label"
    self.view.addSubview(label)
}

func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
    return CGRect(x: x, y: y, width: width, height: height)
}
    

Xcodeではじめる 簡単iPhoneアプリ開発[Xcode 8 & Swift 3対応]

Xcodeではじめる 簡単iPhoneアプリ開発[Xcode 8 & Swift 3対応]