Swift playgrounds及playgroundbook学习心得

Swift playgrounds及playgroundbook学习心得

1.前言

​ 吃尽了WWDC19的苦头,以及在老师和学长的鼓励之下,我决心在WWDC结束后依旧继续攻克技术上的问题,即从xcode project到playground和playgroundbook的转换,接下来,我将以之前的项目为基础,大概讲讲这到底是怎样的一个流程。

2.Swift playgrounds

​ 区别于xcode playground,Swift playgrounds是主要在ipad上运行的简易编程软件,对于学习Swift编程有很大的帮助,但它其实不适合我们去部署一个大的项目,最主要的原因是哪有一个程序员会选择在ipad编程的啊,但是呢,为了能很好地向大家普及这款软件(其实它确实很不错,这个可以自己多多去发掘),苹果WWDC的提交格式就进行了限制,要求提交的为Swift playground,而这个平台虽然很不错,但对于程序员来讲debug这一个很重要的环节,而在这个平台上不能很好地实现debug的功能,于是有人会选择在project先进行调试,在完成之后再转到playground上,所以咱们接下来就讲讲怎么去转,首先第一点,也是很重要的一点,在project里创建项目的时候,最好不要使用storyboard进行UI设计,一切全都用代码解决,不然后面会遇到很大的麻烦的(我就是这样的…)

Playgrounds界面

3.正言

3.1Playground

3.1.1代码构建UI

​ 这个很关键,在project里你可能只需要加几个button之类的,而在playground里,你没有storyboard,所以你要从基本的UIview开始建立,而且每个你添加的组件都要严格约束

let myUIView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: 1024, height: 768))
let bidiButton = UIButton(frame: CGRect(x: 0, y: 0, width: 300, height: 240))
let mangluoButton = UIButton(frame: CGRect(x: 0, y: 0, width: 300, height: 240))

类似这种

​ 有关此处也不再赘述,但需要注意的是,对于每个控件的约束尽量做到尽善尽美,不仅是个好习惯,而且playground对这个还是比较严格的,不然你在playground上运行时出错了你也不好找是在哪,但这些很可能会成为一个问题。

3.1.2类和参数的修改

​ 与project可以任意调用同一目录下的类不同的是,playground里面如果想暴露这个类和参数,那么就要进行public声明,

public class SplitViewController: UISplitViewController {
    public var instrument_name:String = "0"
    override public func viewDidLoad() {
        super.viewDidLoad()
        let masterNc:UINavigationController = UINavigationController(rootViewController: RootViewController(nibName: nil, bundle: nil))
        let detailVc:UINavigationController = UINavigationController(rootViewController:IntroViewController(nibName: nil, bundle: nil))
        self.viewControllers = [masterNc,detailVc]
        
        let nav : UINavigationController = viewControllers.first as! UINavigationController
        let vc : RootViewController = nav.topViewController as! RootViewController
        vc.instrument_name = instrument_name
        print(instrument_name)
        self.preferredDisplayMode = .allVisible
        // Do any additional setup after loading the view.
    }
}

​ 就现在上面这个代码里,我把整个类、instrument_name暴露给其他的类去调用和修改,而这个重写函数的public是一个要求,具体的我也不知道,反正这么做就对了。

3.1.3资源调用的区别

​ 在project中,类似于沙盒,你不需要具体路径,直接加载文件名即可,而在playground中

在这里插入图片描述

Sources中存放自己新建的swift文件,Resources中存放自己的素材文件,图片音频之类的,而在这里的调用就得从Resources下一级目录开始具体写明。

titleImage.image = UIImage(named: "说明/第一页/主题文字.png")

像这样才能正确打开文件

3.2Playgroundbook

​ 这个其实是官方给的一个模板,用这个可以把我们的项目转成Playgroundbook然后发布在ipad上,模板链接

关于这个模板的具体讲解快速通道

​ 而这个其实和前面的差不多,没太多的不同,需要注意到的一点是Playgroundbook的liveview和page机制,一个page对应的是一个liveview,你如果用之前的那种present做页面跳转,相当于跳出当前的liveview,这样就意味着你得建立新的page和liveview,这样其实是比较麻烦的,而最直接的解决办法就是用PlaygroundPage.current.liveView这个方法指向你想要跳转的页面,这样就可以在一个page里展示多个页面,不好的一点就是跳转的比较生硬。

3.3杂

​ 如果最后决定在ipad上发布,那么对于Playground,在这里插入图片描述

箭头指向的里面不要存放建立UI的代码,对于Playgroundbook,在这里插入图片描述

​ Contents里不要放建立UI的代码,这两个里面都放你当前的liveview指向就好,因为这里并不是然你去构建项目的地方,而是你去做导引的地方,你要做的建立都在swift文件里,这里只是把这些文件给导出来,如果在这里建立,ipad上会加载不了,我猜这个模块的本意是做一些小的修改和调试,并不是让你去在这里建立一个项目的。

4.小结

​ 其实转成Playground和Playgroundbook本身的坑是在于代码构建UI控件以及一些特殊的界面比如splitviewcontroller这种,这个得通过在网上搜索各种教程去实现,但是网上关于swift的教程还是比较少的,所以我推荐可以在YouTube上多看看学习学习。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值