Facebook发布Tweaks:让微调iOS应用变得更简单

假设,你正在开发一款iOS应用。
你的iOS应用有很多动画效果,而你(或你的设计师)希望让那些动画效果的持续时间恰到好处。那华丽的抽屉特效是应该耗时半秒钟,还是四分之三秒呢?
通常情况下,开发者会对合适的时间进行猜测,编译他们的应用程序,测试,修改,重新编译,清理,调整,周而复始。鉴于复杂的应用可能需要相当长的时间来进行编译,那些小小的变化就会开始吞噬你的时间,你开始痛恨进度条。
为什么要为了如此简单的东西进行重新编译呢?如果负责调整时间的人的角色更多的是设计师,而不是程序员,那会怎样呢?他们应该为了调整动画速度而去研究源代码吗?
当然了,这里面也有各种快捷方式。比如,你可以将动画速度的变量跟屏幕上的滑块进行关联,让那些测试应用预发布副本的用户可以实时进行调整——不过,你需要手动植入代码,并记得在正式发布前将之移除。这是完全有效的选择,但它不是很规范,而且你希望进行实时调整的每个地方都意味着额外的代码。这种事情可以更简单。
Facebook认为他们已经做到了。
该公司刚刚发布了一个名为“Tweaks”的库,让开发者可以方便地对特定事物进行标记——比如动画效果的时间,或者是按钮的颜色,或者是图片的透明度——并在使用设备实际运行应用时让开发者方便地进行实时调整。这个库把所有这些可调变量打包放到一个小小的隐藏设置页面上,等到正式发布应用时又将之全部清除。
正如Facebook说的那样:
改进一款应用的最好办法是每天使用它。虽然开发者可以提前把自己的想法构建成原型设计——比如使用Origami工具——但可能仍然需要一些时间来观察它在实际使用中的效果。
偶尔,应用在第一次尝试时即已完美。有时候,想法完全行不通。但更多的,开发者需要对应用进行一些微调。最后一种场景正是Tweaks的用武之地,它让那些细微的调整变得简单:不用更改代码,不用电脑,你就可以尝试不同的选项,并选出效果最好的设置。
当一款应用被编译到调试模式下,摇动手机可以弹出一个页面,让用户可以任意更改开发者开放出来的设置。当应用被编译成正常的“发布”模式(即它已经为在应用商店上架做好准备),Tweak的变量值就会被一个正常的、不可修改的值所替代,并且永久性地把配置页面隐藏起来。这样做你只需要添加非常少的额外代码,也不至于忘了将它们移除。
开发者在其代码中需要做的真正修改在于:他们不需要在源代码中写死变量值,而是将值设定成一个“Tweak”。在代码中,你不需要写成:
CGFloat animationDuration = 0.5
而是使用:
CGFloat animationDuration = FBTweakValue(@”Category”, @”Group”, @”Duration”, 0.5);
那么,这其中意义何在呢?
对开发者来说,这意味着可以使用更少的时间和代码对应用进行微调。而额外的好处是,它能够让那些不喜欢编码的设计师来帮助确定应用最佳设置,不需要他们深入源代码或是纠缠开发团队编译出众多新版本。大家都得到了好处!万岁!
Facebook已经在GitHub发布了Tweaks,开发者可以基于非限制性的BSD开源协议免费使用。(译:王灿均)
http://techcrunch.cn/2014/03/26/facebooks-new-tweaks-library-lets-developers-fine-tune-their-ios-apps-on-the-fly/
Facebook发布Tweaks:让微调iOS应用变得更简单的更多相关文章
- spring 第一篇(1-1):让java开发变得更简单(下)
切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...
- [翻译]Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- 深入解析 Kubebuilder:让编写 CRD 变得更简单
作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...
- 快开宝PDA开单器出入库扫码:让批发零售变得更简单
快开宝PDA开单器出现前 批发商户是这样开单和管理的 ★员工痛苦:需要记客户.价格.库存等等,应对报错价.错漏单.盘错货等各种状况. ★老板麻烦:每天要守店.对单.核账,经常因错漏单.库存乱.积压货. ...
- 让全链路压测变得更简单!Takin2.0重磅来袭!
自Takin社区版1.0发布两个多月以来,有很多测试同学陆续在各自的工作中运用了起来,其中包括金融.电商.物流.出行服务等行业.这个过程中我们收到了很多同学的反馈建议,同时也了解到很多同学在落地全链路 ...
- spring 第一篇(1-1):让java开发变得更简单(下)转
spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...
- Moq让单元测试变得更简单
[ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...
- Winform 让跨线程访问变得更简单
Winform 让跨线程访问变得更简单 前言 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出 ...
随机推荐
- c# 解决Socket问题——由于目标机器积极拒绝,无法连接
关于单机出现这种问题不多赘述,主要阐述服务机和客户机出现这种问题的解决办法. 1.检查防火墙 这种问题出现的最多,特别是你的服务机还是买的各家的云产品,比如阿里云就是到防火墙中添加出入站规则,Azur ...
- 【Linux】limits.conf 不重启就生效或者不生效的原因
前阵子,我要用到使LInux的文件打开数为65534个,而且需要永久生效,于是将配置写到了: vim /etc/security/limits.conf * soft nofile 65534* ha ...
- 【ABAP系列】SAP ABAP WRITE字段隐藏的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 字段隐藏的方法 ...
- oracle--表空间处理
CREATE TABLESPACE命令详解(转) 表空间理解 https://www.cnblogs.com/kerrycode/p/3418694.html 常用操作 https://www.cnb ...
- Linux中 xargs 命令用法
xargs命令: xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具. 1.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令 ...
- ajax传文件用express的multer接住
html部分: //input type设为file <input type="file" name="file" id="fileInputE ...
- 简单实现一个textarea自适应高度
textarea自适应的实现方法很多,原理其实比较简单:监听textarea的input或者键盘事件,获取元素的scrollHeight,重置textarea元素的高度. 预览地址:textarea ...
- 题解 P5265 【模板】多项式反三角函数
→_→ OI 生涯晚期才开始刷板子题的咱 其实这题就是道公式题,搞过多项式全家桶的同学贴贴板子照着公式码两下都能过... 至于公式的证明嘛...总之贴上公式: \[Arcsin(F)=\int{F'\ ...
- 2019 Multi-University Training Contest 2 - 1009 - 回文自动机
http://acm.hdu.edu.cn/showproblem.php?pid=6599 有好几种实现方式,首先都是用回文自动机统计好回文串的个数. 记得把每个节点的cnt加到他的fail上,因为 ...
- Vue组件通信方式(一)
组件与组件的关系,通常有父子关系,兄弟关系以及隔代关系. 针对不同的场景,如何选用适合的通信方式呢? (一) props/$emit parentComponent ==> childCompo ...