仿网易云音乐广告页的转场动画 | Soledad 

作者:JerryXia | 发表于 , 阅读 (0)
先上效果图:
细心的小伙伴会发现,现在 网易云音乐的广告页 以及 微信相册中点击查看评论 都用了该转场动画。作为一名 iOS 程序员,本能的想去实现它。
说明:本篇博文参考了 onevcat 的 WWDC 2013 Session笔记以及 GitHub 上的开源项目。不打算先理论了,直接拿 demo 项目开撸。
项目结构很显然,有两个 ViewController,在本例中分别是 MainViewController(下文简称 mainVC) 和 ForwardViewController(简称 forwardVC)。
首先,我们让 mainVC 声明 UIViewControllerTransitioningDelegate协议,并实现 - (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting so...阅读全文

 我眼中技术博文写作的最佳实践 | Soledad 

作者:JerryXia | 发表于 , 阅读 (0)
最近一直在琢磨一个问题,就是如何保证技术博客文章的时效性以及准确性。例如,如果有读者发现我某篇文章中有错误,或者有自己更好的见解,他要如何跟我进行更高效的反馈以及讨论呢?
联想到开源项目以及社会化编程,我认为直接发布在 GitHub 上是一个不错的选择。有反馈或者有意见可以直接 open issue,自己有清晰的想法可以直接 pull request,没有比这更完美的平台了。
这里是传送门: https://github.com/caiyue1993/DevNotes,以后就在这上面写技术文章(同时也会有选择性的同步到本博客中),如果有帮助到你,请记得 ★Star 支持。
意外的发现,@nixzhu也采用了相同的方式。
另外,自己之后主要活跃的社交平台是以下三种
微博:@CaiYue_GitHub:caiyue1993博客:Soledad方向定好了,算是完成了心头的一件大事,接下来的日子里需要做的除了整理原先的博文外,就是多看书,多看书,多看书。
最后,用刘未鹏的一段话结尾吧,和写作有关,深有感触。
有人用10年才能领悟一个道理,因为他们是被动领悟——只有在现实撞到他脸上...阅读全文

 重学 Block & Closure 系列之 Closure 篇 | Soledad 

作者:JerryXia | 发表于 , 阅读 (0)
介绍Swift 中的 Closure 和 Objective-C 中的 Block 比较相似。Closure 也可以捕获和保存上下文中任意常量和变量的引用(它自己也是一个引用类型)。另外,Swift 会为你管理所有捕获过程中的内存操作。
Closure 也分三种:
全局函数(对,函数也是闭包的一种),英文叫做 Global functions,一个有名字并且不会捕获任何值的 Closure嵌套函数,Nested function,它是一个有名字并可以捕获其外部值的闭包。例如:123456789101112func myFunctionWithNumber(_ someNumber: Int) {        func increment(_ step: Int) -> Int {        return someNumber + 10    }        let incrementedNumber = increment(someNumber)    print("The incremented number is \(incrementedNumber)")}myFun...阅读全文

 重学 Block & Closure 系列之 Block 篇 | Soledad 

作者:JerryXia | 发表于 , 阅读 (0)
重学 Block & Closure 系列是关于 Objective-C 中的 Block(块) 和 Swift 中的 Closure(闭包)。
我总是想弄清楚一些事情并把它们记录下来,那样会帮助我更好的掌控它们,自己每天也会更加安心。
本文即是关于 Block 的个人小结。另一篇关于 Closure 的在这里。 
基本用法Block 最早是和 GCD 一起被苹果公司引入的,最初主要是用来解决多线程编程的问题。Block 十分有用,借由它,开发者可以将代码像对象一样传递,令其在不同环境下运行。还有一个关键点,在定义 Block 的范围内,它可以访问到其中的全部变量。
Block 的声明格式如下:return_type (^block_name)(parameters)
格式看上去有点奇怪。因为正常的声明变量都是 NSString *str; ,变量类型在左,变量名在右。而 Block 的变量名在中间,这一点值得注意一下。
来看一段例子:123void (^someBlock)() = ^{};
这段代码中定义了一个名为 someBlock 的 Block。它不接受参数,返...阅读全文