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++笔记(2)——一些语法基础知识以及基本算法知识
今天和PAT无直接相关的关系,主要是关于一些语法/算法的笔记,因为我发现自己的基础还没有打扎实,有些时候看别人的代码还会觉得一头雾水,不明白代码的含义. 一些C/C++语法 先从语法开始吧.这部分很琐 ...
- 内网渗透 - 权限维持 - Linux
1.预加载型动态链接库后门2.strace后门3.ssh后门4.OpnenSSH后门5.sshd软链接后门6.wrapper后门7.SUID后门8.inetd服务后门9.协议后门10.vim后门11. ...
- Linq查询语法(1)
转:http://www.cnblogs.com/ahao214/archive/2013/01/22/2871044.html LINQ的基本格式如下所示:var <变量> = from ...
- 如何创建Windows虚拟机
Windows虚拟机搭建 第1步:运行"Vmware WorkStation",看到主页面,创建新的虚拟机 第2步:新建虚拟机向导——典型(推荐) 第3步:选择光盘映像文件 第4步 ...
- Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表: Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述
- CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158
CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158 //mediatek/ke ...
- C# XML 解析包含特殊字符的内容
xml结构会解析一些特殊字符,特别是& < ,导致XmlDocument 解析错误 解决方法:将内容放在<![CDATA[ ]]>中,例如<![CDATA[2]] ...
- id 和 name 区别
在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...
- vue中搜索关键词,使文本标红
UserHead.vue中搜索框: <!-- 搜索 --> <el-col :span="6" :offset="8" class=" ...
- vue项目上传到OSS
1.输入阿里云登陆地址 http://signin.aliyun.com/1987179281335458/login.htm 登陆地址 阿里云账号 2.选择对象oss,建议文件夹 3.将文 ...