You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 3.0中CGSizeMake的替代方案?升级后代码报错求助

Swift 3.0 中 CGSizeMake 的替代方案

嘿,刚好我升级Swift 3的时候也踩过这个坑!苹果在Swift 3里把Core Graphics里一堆XXXMake系列方法都废弃了,换成了更贴合Swift语法的结构体初始化方式。针对你这段设置scrollView内容尺寸的代码,有几个实用的替代方案:

  • 官方推荐:直接使用CGSize的结构体初始化器
    这是最标准、最符合Swift风格的写法,完全替代CGSizeMake的功能,参数名清晰可读性更强。把你的代码改成这样就行:

    self.scrollView.contentSize = CGSize(width: self.view.frame.width*2, height: self.view.frame.size.height)
    
  • 可选写法:显式调用init初始化器
    和上面的方案本质一致,只是多写了init关键字,如果你觉得这样更明确也可以用:

    self.scrollView.contentSize = CGSize.init(width: self.view.frame.width*2, height: self.view.frame.size.height)
    

    不过通常省略init会更简洁。

  • 过渡方案:自定义扩展模拟CGSizeMake
    要是你一时改不过来旧写法的习惯,可以给CGSize写个简单扩展,模拟原来的调用逻辑:

    extension CGSize {
        static func make(width: CGFloat, height: CGFloat) -> CGSize {
            return CGSize(width: width, height: height)
        }
    }
    

    之后就能像以前那样调用(只是变成了命名参数):

    self.scrollView.contentSize = CGSize.make(width: self.view.frame.width*2, height: self.view.frame.size.height)
    

    不过这个只是过渡用的小技巧,还是建议尽快适应官方的初始化写法哦。

内容的提问来源于stack exchange,提问作者michael portendorfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:11:44