0x00
在 Google 的 Inbox app 中,有这样一个场景:点击左上角按钮,弹出侧边栏,空白部分形成一个黑色半透明的遮罩,同时 status bar 隐藏,如下图
半年前我写过一篇模仿花瓣app转场动画的文章。
当时的情况是我使用了 UINavigationController,用了一种不太正常的做法实现了效果。最近一直在看 Raywenderlich 的动画书,恰好看到了一样的动画效果,不过书中的是基于 func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion completion: (() -> Void)?)
实现。书中也有基于 UINavigationController 的自定义转场动画,实现的协议略有不同,但方法都是很接近的。
这篇文章和之前的文章实现了一样的效果,不过使用的是不同的方法。
此处的占位符是指git log --pretty=format:""
双引号中的占位符
占位符 | 说明 |
---|---|
%H | commit hash |
%h | 简短 commit hash |
%T | tree hash |
%t | 简短的 tree hash |
%P | parent hash |
%p | 简短的 parent hash |
%an | 作者名字 |
%ae | 作者邮箱 |
%ad | 日期,--date= 指定的格式 |
%aD | 日期,RFC2822格式 |
%ar | 日期,相对格式 |
%at | 日期,Unix timestamp |
%ai | 日期,ISO 8601格式 |
%cn | 提交者名字 |
%ce | 提交者邮箱 |
%cd | 提交日期,--date= 指定的格式 |
%cD | 提交日期,RFC2822格式 |
%cr | 提交日期,相对格式 |
%ct | 提交日期,Unix timestamp |
%ci | 提交日期,ISO 8601格式 |
%d | ref 名称,(branch、tag) |
%s | commit 信息标题 |
%b | commit 信息内容 |
%Cred | 切换到红色 |
%Cgreen | 切换到绿色 |
%Cblue | 切换到蓝色 |
%Creset | 重置颜色 |
%C(…) | 自定义颜色 |
%n | 换行 |
前几天遇到了一个问题,就是在 AngularJS 中 $state 发生改变(或者称之为路由发生变化)不会清空前一个 scope 的内容,具体情景如下图
我在这个 scope 添加了一个间隔十分钟的 $interval,为了方便演示我改成了三秒钟的,当我进行数次在这个页面和其他页面间切换后,发现这个 scope 里的 $interval 重叠了,之前的 $interval 都没有销毁,不仅表现出现了错误,还造成了内存泄漏。
每次访问stackoverflow都有一点很烦,就是我如果想看一个回答发布的具体时间,只能把鼠标移到时间上等待两秒出现悬浮窗来显示。由于技术发展太快,所以有些五年前解决这个问题的相关API到了当前很可能已经不适用了或者已有了更好的解决办法,所以stackoverflow上我也会尽量看时间最近的讨论,显示完整的回答/评论发布时间对我来说就会方便很多。
为了解决这个痛点,我一直打算自己搞一个chrome的小扩展来修改页面的DOM,刚好今天手头活干完了,看了一下chrome扩展开发的文档,发现比想象中要简单很多,于是自己试了一下,完成了这个小扩展。
我在OS X下也进行了不少次终端配置,每一次配置都忘了以往是怎么配置的,又各种google。刚好昨天公司配了台新的笔记本,我就把终端配置总结一下,方便自己日后查看。其实关于OS X的终端配置,池建强老师的这篇文章就很好,也是我第一次配置的重要参照。
这是我在公司做项目时遇到的一个需求,就是实现类似下图的效果
右侧气泡的切图是这样的:
就是要实现这个切图的拉伸,达到动图中的效果,气泡的尖角始终对准时间线上的小圆点。(ps:具备像素眼的童鞋可能发现这几个气泡的高度不是等差的,这是因为我在气泡的下面还加了一个透明的view,气泡的边线与该view的边线间有一定的间隙,label显示的是tableViewCell的整体高度)
最近在看 Raywenderlich 的动画书,碰巧看到了一样的转场动画。我新写了一篇文章介绍正常的做法。
然后根据这段时间的积累,我优化了一下之前的代码,具体请看看正文部分。
花瓣APP的转场动画比较有意思,我第一次看到就喜欢上了,为了美化自己毕业设计的游戏APP,我模仿了这个动画效果,花瓣APP的动画效果是这样的:
这是我自己模仿的动画效果:
其实效果还可以,不流畅是gif图的问题。
这是我的本科毕业设计项目,一个iOS平台的2D游戏,使用SpriteKit引擎编写,游戏玩法仿照了HackWithSwift第26个项目。
App的后台使用django,做了三个简单的API,分别是上传文件、下载文件和返回文件列表,具体内容参见服务端WIKI
不知道你有没有遇到过这样的问题,如下图
第一个ViewController中有一个TableView,只有一个Cell,style为right detail,点击这个Cell会push进入第二个ViewController。第二个ViewController中有一个TextView,我设置了代理方法修改这个TextView的内容会更新到第一个ViewController的那个Cell的detailLabel里,但是当我清空TextView的内容后,再添加新的内容,detailLabel没法立即更新显示,当你手指(鼠标)点上去时它显示了出来,就像图片中显示的那样。
我进行了很多次测试,发现每一次如果是TextView清空-后退-再进入-添加内容-再后退,都会导致这个问题产生,不论是真机还是模拟器。我只在iOS9和iOS8中进行了测试,发现iOS9中不存在这个问题,不知道是不是iOS8的bug,可以看看stackoverflow上这篇讨论。
我总结了三种方法来解决这个问题,demo文件传到了github上面:https://github.com/altair21/RightDetail_issueDemo,有三个branch分别是三种解决方案。
解决问题之前需要先搞清楚问题出在哪里,我在第一个ViewController的viewWillAppear方法里在控制台输出detailLabel的frame信息,发现detailLabel的frame在每次输出时都是上一个修改之前的值,在这个问题中就是清空之后frame的宽和高还是清空之前的值,只是此时detailLabel没有文字,再添加时返回回来frame的宽和高变为(0,0),此时即使有文字也显示不出来了。
知道问题所在之后就好解决了,我想到了三种方法,分别对应三个branch的解决方案。