Cocoapods 库的全自动化发布
Cocoapods 公有库、私有库维护繁琐,一个常规的公有库发布流程如下
- 业务逻辑修改
- 跑一下
单元 & UI测试
- Merge
- 修改 podspec
- git 提交 打tag
- pod trunk push
最终目的:
- 业务逻辑修改
- PR 后 CI 验证
- git tag push
title
- hello
我喜欢swift😍,有个Taylor前缀更好
iOS的UIEvent事件有好几种:Touch Events(触摸事件)、Motion Events(运动事件)、Remote Events(远程事件),其中最常用的应该就是Touch Events了,今天我们主要就讲它,核心就是到
UIView
的func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
以及nextReponder两个
比如成果:魔图&图片浏览 复杂的视图层级拆分
考一考: 直接继承于UIResponder的类有哪些?
先看看UIResponder类
|
|
常见的触摸响应链构建
- addSubview
- ViewController 初始化
核心的方法
|
|
注意:hittest & pointinside是uiview的实例方法
比如tableview的cell点击,hitTest寻找响应cell的过程
Note: 查询过程也不是这么顺利的,有弯路,也有属性限制
|
|
|
|
|
|
view修改响应区域方式有两种,一种如下,它的superview来hitTest,第二种自己hitTest
|
|
和 hitTest自底向上相反,它是从最末端的responder向下传递,hitTest自下而上查找响应的view,nextResponder是基于hitTest基础上,自上而下寻找event的响应者
常见的应用案例:BPUIResponderAdditions中的方法,可以查找view的Controller或navigationController
|
|
通过nextResponder向下传递event
演示
touchesBegan / super.touchesBegan 或 nextResponder.touchesBegan 一直调用下去
有拦腰截断的意思,原有的顶部第一响应者被修改,响应链中接收事件第一人(常见textField,webView及UImenuController,见demo)
演示
- Button event 先下传递
- becomeFirstResponder后,nextResponder无事件下传
- canBecomeFirstResponder \ becomeFirstResponder 拦截
系统会将Touch cancel消息发送给hitTestView ,并调用hitTestView的TouchCancel
演示
demo:button的touchUpInside对UIPanGestureRecognizer的影响
- 通过唯一的网址, 就可以链接一个特定的视图到你的 APP 里面, 不需要特别的 schema
- 不再需要JavaScript检查平台,跳转也不需要js去做特定处理
- 比scheme更灵活更安全的匹配URL跳转
- 实现App与Web一体化
注意:不能使用模拟器调试
工作原理:When the app is installed, the system downloads and verifies the site association file for each of its associated domains. If the verification is successful, the app is associated with the domain.
Configure your file server
|
|
Alright! So you have your signed apple-app-site-association file. Now you just need to configure your file server to host this for you. There are a few caveats:
- It must be sent with the header ‘application/pkcs7-mime’
- It must be sent from the endpoint youdomain.com/apple-app-site-association
- It must return a 200 http code.
We set up the one for all Branch integrated apps using our Node+Express link servers. Here’s the code we used in case that’s helpful:
|
|
可以从原有的scheme过渡过来
视频优先推荐
https://developer.apple.com/videos/play/wwdc2015/509/
优秀博客
https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9
https://blog.branch.io/ios-9.2-deep-linking-guide-transitioning-to-universal-links
http://blog.hokolinks.com/how-to-implement-apple-universal-links-on-ios-9/
可能出现的bug(巨坑,也可能是配置问题)
http://stackoverflow.com/questions/32751225/ios9-universal-links-does-not-work
除了加减乘除外还有好多好多数学运算需要我们处理,但我们很多都没有用到,感觉low爆了
Any time you’ve got to make some numbers happen, it’s probably worth it to consider using Accelerate
|
|
耗时上对比是不是reduce,map
等系统的高阶函数被“加速库”
秒了,但使用上貌似reduce,map是比较灵活的
函数混合示例: 使用中文变量😄
|
|
|
|
很多图像处理是根据矩阵做处理的,像素越大,处理性能要求越高
|
|
|
|
|
|
注释区域: 3 个斜线(///)或以下面的形式开头:
|
|
|
|
|
|
Jazzy 是一款可以为 Swift 和 Objective-C 代码产生具有 Apple 风格的代码文档工具。
效果如下
Alamofire
为例子:jazzy –help 查看帮助
- cd Alamofire 的项目path
- jazzy –output /Users/xcodeyang/Desktop/jazzy_document
源于项目中的应用太广了,但是对swift的很多简单特性不熟。之前那个动画的
阶段
使用到enum有遇到困难暂时绕开它了
当时的目标就是外部直接赋值操作
为了省事,目前直接使用死的文案放在这里
|
|
携带参数
|
|
####那我们要取值的有
|
|
|
|
|
|
之前就一直想要使用枚举做到外部动态对枚举赋值储存操作,
那成员变量用法如下
|
|
|
|
多个参数的介入时,可以使用元组,此处常规使用报错暂时无法解决,
使用func函数赋值倒是没有出错。why??
|
|
我们一开始知道 Playground,也知道然后查看一些变量及变量的历史记录。偶尔还知道可以做视图甚至动画展示但是,现在,你特么看到的是 MarkDown 语法,有没有。
如下所有案例使用Xcode7下加载playground文件,可预览效果
文件下载链接
至上而下执行,显示变量的当前值及历史记录的变化。
|
|
简单显示UI的基础元素
|
|
这里需要对 XCPlayground 有一点了解,好像还对SpriteKit做了支持文章连接
|
|
sources
我们直接在 Playground 上面写代码,然后编译器会实时编译我们代码,并将结果显示出来。但是效率很低,source的作用就可以发挥出来
resources
可以作为sandbox使用
|
|
iPhone 5s,iOS 8,iOS7时未开放
依赖 LocalAuthentication.framework
|
|
错误类型
|
|
###函数参数的『省略』
变化过程
{ (num1: Int, num2: Int) -> Bool in return num1>num2 }
{ (num1: Int, num2: Int) in return num1>num2 }
{ (num1, num2) in return num1>num2 }
{ return $0 > $1 }
{ $0 > $1 }
|
|
|
|
|
|
|
|
|
|
守卫,和隐式解析搭配有奇效
|
|
|
|
调用的时候再在家初始化方法(懒加载)
|
|
|
|
|
|