RxSwift基本概念

FRP函数式反应型编程

Functional Reactive Programming , 缩写为 FRP

函数编程

函数是第一等公民

所谓 第一等公民 (first class) ,指的是函数与其他数据类型一样,处于平等地位。既可以赋值给其他变量,也可以作为参数传入另一个函数,或者作为别的函数的返回值。 将数组通过指定的函数映射成另一个数组,例如将increment函数作为参数传入数组的map函数: {% codeblock lang:swift %} let increment = { return $0 + 1 } [1,2,3].map(increment) // [2,3,4] {% endcodeblock %}

互动性的教学工具XCPlayground

Playground 展示语法和实时执行真实数据的特性,为编写方法和库接口提供了很好的机会,通过实时编译我们能了解语法、写出例子以及获得方法如何使用的说明,所有这些就如一个活的文档展示在眼前。

使用Cocoapods创建私有podspec

创建一个版本库来托管pod索引:pod repo add命令

第一步:在github登录个人账号,创建一个库作为pod索引托管库。也可根据具体情况可以选择:githubCODING开源中国Bitbucket以及CSDN等,代码托管平台。 当索引库托管在github私有的仓库时,如果有其他同事共同开发维护,则需要配置Git仓库的权限。 第二步:pod化版本库,使其专门用户管理个人的*podspec索引文件 {% codeblock repo add命令 lang:ruby %}

UIStackView教程了解StackView

原地址

UIStackView简单介绍

一个Stack View能够将它所含的View以各种方式沿其轴向进行分布,同时也可以将View沿某个方向等距分布,要隐藏Stack View中的视图,你只需要设置该View的Hidden属性为true,剩下的工作Stack View会自己完成。。 坐标(Axis)、间隔(Spacing)、对齐(Alignment)以及分布(Distribution )等。 distribution属性:决定Stack View如何沿它轴向的水平方向摆放它的subview,当属性值是Fill,这表示subview会沿轴向完全占据Stack View。因此,Stack View会拉伸其中一个subview使其填充剩余空间,尤其是水平内容优先级最低的那个,如果所有subview优先级相同,则拉伸第一个subview。 Alignment属性:决定了Stack View如何沿它轴向的垂直方向摆放它的subview,对于一个垂直的Stack View,这个属性可以设置为Fill、Leading、Center和Trailing。 对于水平的Stack View,这个属性则稍有不同: .Top取代了.Leading,.Bottom取代了.Trailing。此外,水平Stack View还多出了两个属性值:.FirstBaseLine和.LastBaseLine。 对于水平的Stack View,这个属性则稍有不同: Fill: Leading: Center: Trailing:

更改设备屏幕上显示的应用程序图标下方的名称

修改APP启动图标上的名称,需配置Info.plist文件,增加CFBundleDisplayName属性键值对。 进入到如下界面:

Info.plist文件属性列表中搜索"Bundle display name",如果存在就修改为新APP名称。 如果不存在,在任何一个属性条目下,点击"+“按钮,弹出的下拉列表中选择"Bundle display name”,再双击"Bundle display name"属性值列,输入新APP名称。

自定义展示型控制器

{% github it-boyer PresentationsDemo 2cce4c908 width = 30% %}

触发转场的方式

官方支持的自定义转场

  • UINavigationControllerpushpop;
  • UITabBarController 中切换 Tab;
  • Modal 转场:presentationdismissal,俗称视图控制器的模态显示和消失,仅限于modalPresentationStyle属性为 UIModalPresentationFullScreenUIModalPresentationCustom 这两种模式; UICollectionViewController 的布局转场:仅限于 UICollectionViewControllerUINavigationController 结合的转场方式,与上面三种都有点不同,不过实现很简单,可跳转至该链接查看。 官方的支持包含了 iOS 中的大部分转场方式,还有一种自定义容器中的转场并没有得到系统的直接支持,不过借助协议这种灵活的方式,我们依然能够实现对自定义容器控制器转场的定制,在压轴环节我们将实现这一点。

相关触发转场的动作

UINavigationController

UINavigationController 中所有修改其viewControllers栈中 VC 的方法都可以自定义转场动画: {% codeblock swift lang:swift %} //我们使用的最广泛的 push 和 pop 方法 func pushViewController(_ viewController: UIViewController, animated animated: Bool) func popViewControllerAnimated(_ animated: Bool) -> UIViewController? //不怎么常用的 pop 方法 func popToRootViewControllerAnimated(_ animated: Bool) -> [UIViewController]? func popToRootViewControllerAnimated(_ animated: Bool) -> [UIViewController]? //这个方法有有点特别,是对 VC 栈的整体更新,开启动画后的执行比较复杂,具体参考文档说明。不建议在这种情况下开启转场动画。 func setViewControllers(_ viewControllers: [UIViewController], animated animated: Bool) {% endcodeblock %}

macOS支持JavaScript自动化组件基础

苹果 OS X Yosemite系统JavaScript作为 AppleScript的另一选择。AutomationOS X 10.10版本中的新特性,苹果在官网发布JavaScript for Automation Release Notes有篇文章介绍了用JavaScript写自动化Automation脚本。 JavaScript凭借其简单的语法,良好的性能,超轻量的框架,极小耦合的模块系统等等优势已经吸引了很多大厂的关注。 再加上JavaScript先天开放且无版权专利纠纷的问题,拥有非常广泛的开发者(开源)群体,苹果将其引入OS X平台代替私有的AppleScript,可能也有着一部分开放性平台的考虑,从而吸引广泛的第三方开发者。 资源 JavaScript OS X App Examples JavaScript for Automation Cookbook