ios开发 连接wifi代码中为什么自己对自己写的代码总感觉不满意

&什么是BUG,简单点说就是,程序没有按照我们预想的方式运行。我比较喜欢把BUG分成两类:Crash掉的没有Crash掉的可能在平时的编程实践中,往往简单的把BUG与Crash基本等价了。而且我们很多精力也都放在解决Crash的Bug上面。而对于没有Crash掉的BUG,似乎没有过多的关注。但是,实际情况上那些让人痛彻心扉的“天坑”往往是那些没有Crash掉的BUG造成的,比如前一段时间OpenSSL心脏大出血。为什么这么说呢?且听我慢慢道来。如何合理地制造BUGCrash掉的BUG,用程序的死证明了你的程序存在问题,你必须抓紧时间来解决程序的问题了。而没有Crash掉的Bug,像是一个善于撒谎的人,伪装成可以正常运转的样子,让整个程序运行在一个不稳定的状态下。虽然外表看起来好好地(没有crash),但是里子早就烂透了,一旦报露出问题往往是致命的,比如OpenSSL的心脏大出血。这就是前人总结的“死程序不说谎”。Crash不可怕,可怕的是程序没有Crash而是运行在一个不稳定的状态下,如果程序还操作了数据,那带来的危害将是灾难性的。所以放心的让程序Crash掉吧,因为当他Crash掉的时候,你还有机会去修正自己的错误。如果没有Crash,那就有可能要给整个程序和产品收尸了。因此合理制造“BUG”的原则之一,也是最大的原则就是:尽量制造Crash的BUG,减少没有Crash的BUG,如果有可能将没有Crash掉的Bug转换成Crash的BUG以方便查找。NSAssert这个应该都比较熟悉,他的名字叫做“断言”。断言(assertion)是指在开发期间使用的、让程序在运行时进行自检的代码(通常是一个子程序或宏)。断言为真,则表明程序运行正常,而断言为假,则意味着它已经在代码中发现了意料之外的错误。断言对于大型的复杂程序或可靠性要求极高的程序来说尤其有用。而当断言为假的时候,几乎所有的系统的处理策略都是,让程序死掉,即Crash掉。方便你知道,程序出现了问题。断言其实是“防御式编程”的常用的手段。防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。断言能够有效的保证数据的正确性,防止因为脏数据让整个程序运行在不稳定的状态下面。关于如何使用断言,还是参考《代码大全2》中“防御式编程”一章。这里简单的做了一点摘录,概括其大意:用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况。避免把需要执行的代码放到断言中用断言来注解并验证前条件和后条件对于高健壮性的代码,应该先使用断言再处理错误对来源于内部系统的可靠的数据使用断言,而不要对外部不可靠的数据使用断言,对于外部不可靠数据,应该使用错误处理代码。 而在IOS编程中,我们可以使用NSAssert来处理断言。比如:-&(void)printMyName:(NSString&*)myName&&{&&&&&&NSAssert(myName&==&nil,&@&名字不能为空!&);&&&&&&NSLog(@&My&name&is&%@.&,myName);&&}我们验证myName的安全性,需要保证其不能为空。NSAssert会检查其内部的表达式的值,如果为假则继续执行程序,如果不为假让程序Crash掉。每一个线程都有它自己的断言捕获器(一个NSAssertionHanlder的实例),当断言发生时,捕获器会打印断言信息和当前的类名、方法名等信息。然后抛出一个NSInternalInconsistencyException异常让整个程序Crash掉。并且在当前线程的断言捕获器中执行handleFailureInMethod:object:file:lineNumber:description:以上述信息为输出。当时,当程序发布的时候,不能把断言带入安装包,你不想让程序在用户机器上Crash掉吧。打开和关闭断言可以在项目设置中设置assert ,在release版本中设置了NS_BLOCK_ASSERTIONS之后断言失效。尽可能不要用Try-Catch并不是说Try-Catch这样的异常处理机制不好。而是,很多人在编程中,错误了使用了Try-Catch,把异常处理机制用在了核心逻辑中。把其当成了一个变种的GOTO使用。把大量的逻辑写在了Catch中。弱弱的说一句,这种情况干嘛不用ifelse呢。而实际情况是,异常处理只是用户处理软件中出现异常的情况。常用的情况是子程序抛出错误,让上层调用者知道,子程序发生了错误,并让调用者使用合适的策略来处理异常。一般情况下,对于异常的处理策略就是Crash,让程序死掉,并且打印出堆栈信息。而在IOS编程中,抛出错误的方式,往往采用更直接的方式。如果上层需要知道错误信息,一半会传入一个NSError的指针的指针:-&(void)&doSomething:(NSError*&__autoreleasing*)error{&&&&...&&&&if(error&!=&NULL)&&&&{&&&&&&&&*error&=&[NSError&new];&&&&}&&&&....}而能够留给异常处理的场景就极少了,所以在IOS编程中尽量不要使用Try-Catch。(PS:见到过使用Try-Catch来防止程序Crash的设计,如果不是迫不得已,尽量不要使用这种策略)尽量将没有Crash掉的BUG,让它Crash掉上面主要讲的是怎么知道Crash的“BUG”。对于合理的制造“BUG”还有一条就是尽量把没有Crash掉的“BUG”,让他Crash掉。这个没有比较靠谱的方法,靠暴力吧。比如写一些数组越界在里面之类的。比如那些难调的多线程BUG,想办法让他Crash掉吧,crash掉查找起来就比较方便了。总之,就是抱着让程序“死掉”的心态去编程,向死而生。如何查找BUG其实查找BUG这个说法,有点不太靠谱。因为BUG从来都不需要你去找,他就在那里,只增不减。都是BUG来找你,你很少主动去找BUG。程序死了,然后我们就得加班加点。其实我们找的是发生BUG的原因。找到引发BUG的罪魁祸首。说的比较理论化一点就是:在一堆可能的原因中,找到那些与BUG有因果性的原因(注意,是因果性,不是相关性)。于是解决BUG一般可以分两步进行:合理性假设,找到可能性最高的一系列原因。对上面找到的原因与BUG之间的因果性进行分析。必须确定,这个BUG是由某个原因引起的,而且只由改原因引起。即确定特定原因是BUG的充分必要条件。 找到原因之后,剩下的事情就比较简单了,改代码解决掉。合理性假设其实,BUG发生的原因可以分成两类:我们自己程序的问题。系统环境,包括OS、库、框架等的问题。 前者找到了,我们可以改。后者就比较无能为力了,要么发发牢骚,要么email开发商,最后能不能被改掉就不得而知了。比如IOS制作framework的时候,category会报方法无法找的异常,到现在都没有解决掉。当然,一般情况下导致程序出问题的原因的99.999999%都是我们自己造成的。所以合理性假设第一条:首先怀疑自己和自己的程序,其次怀疑一切而程序的问题,其实就是开发者自己的问题。毕竟BUG是程序员的亲子亲孙,我们一手创造了BUG。而之所以能够创造BUG,开发者的原因大致有三:知识储备不足,比如IOS常见的空指针问题,发现很多时候就是因为对于IOS的内存管理模型不熟悉导致。错心大意,比较典型的就是数组越界错误。还有在类型转化的时候没注意。比如下面这个程序:for&(int&i&=&100;&array.count&-&(unsigned&int)i&&&10&;&){&&&&i++&&&&.....}按道理讲,这应该是个可以正常执行的程序,但是你运行的话是个死循环。可能死循环的问题,你改了很多天也没解决。直到同事和你说array.count返回的是NSUInterge,当与无符号整形相间的时候,如果出现负值是回越界的啊。你才恍然大悟:靠,类型的问题。逻辑错误这个就是思维方式的问题,但是也是问题最严重的。一旦发生,很难查找。人总是最难怀疑自己的思维方式。比如死循环的问题,最严重的是函数间的循环引用,还有多线程的问题。 但是庆幸的是绝大多数的BUG都是由于知识储备不足和粗心大意造成的。所以合理性假设的第二条:首先怀疑基础性的原因,比如自己知识储备和粗心大意等人为因素,通过这些原因查找具体的问题。之后再去怀疑难处理的逻辑错误。 有了上面的合理性怀疑的一些基本策略,也不能缺少一些基本的素材啊。就是常见的Crash原因,最后我们还是得落地到这些具体的原因或者代码上,却找与BUG的因果性联系。访问了一个已经被释放的对象,比如:NSObject * aObj = [[NSObject alloc] init]; [aObj release]; NSLog(@”%@”, aObj);&访问数组类对象越界或插入了空对象访问了不存在的方法字节对齐,(类型转换错误)堆栈溢出多线程并发操作Repeating NSTimer合理性假设第三条:尽可能的查找就有可能性的具体原因。因果性分析首先必须先说明的是,我们要找的是“因果性”而不是“相关性“。这是两个极度被混淆的概念。而且,很多时候我们错误的把相关性当成了因果性。比如,在解决一个多线程问题的时候,发现了一个数据混乱的问题,但是百思不得其解。终于,有一天你意外的给某个对象加了个锁,数据就正常了。然后你就说这个问题是这个对象没有枷锁导致的。但是,根据上述你的分析,只能够得出该对象枷锁与否与数据异常有关系,而不能得出就是数据异常的原因。因为你没能证明对象加锁是数据异常的充分必要条件,而只是使用了一个单因变量实验,变量是枷锁状态,取值x=[0,1],x为整形。然后实验结果是枷锁与否与数据异常呈现正相关性。相关性:在概率论和统计学中,相关(Correlation,或称相关系数或关联系数),显示两个随机变量之间线性关系的强度和方向。在统计学中,相关的意义是用来衡量两个变量相对于其相互独立的距离。在这个广义的定义下,有许多根据数据特点而定义的用来衡量数据相关的系数。因果性:因果是一个事件(即“因”)和第二个事件(即“果”)之间的关系,其中后一事件被认为是前一事件的结果。 错误的把相关性等价于因果性。不止是程序员,几乎所有人常见的逻辑错误。为了加深认识,可以看一下这篇小科普:相关性 ≠ 因果性。因果性分析的首要问题就是,别被自己的逻辑错误欺骗,正确的分辨出相关性和因果性之间的区别。不要把相关性等价于因果性。之后便是因果性分析的内容了,之前一直反复说,因果性分析的目的就是确定特定原因是BUG发生的充分必要条件。那么确定这个事情,就需要两步:充分性证明必要性证明关于充分性证明,这个基本上就是正常的逻辑推理。基本思路就是,能够还原出BUG出现的路径,从原因到BUG发生处的代码,走了怎样的函数调用和控制逻辑。确定了这个基本上就能够证明充分性。一般情况下根据Crash的堆栈信息能够,非常直接的证明充分性。关于必要性证明,这个就比较困难了。充分性和必要性的定义如下:当命题“若A则B”为真时,A称为B的充分条件,B称为A的必要条件。那么必要性就是,BUG能够作为导致BUG的原因的原因。这个说法比较拗口。换种说法,就是你得确认这个BUG能够解释原因,这个BUG就是而且只是这个原因造成的。只有证明了充分必要性,才能算是真正找到了BUG的原因。来源:IOS_Tips原文://make-bugs-correct.html?sukey=ecafc0a7cc4a741ba9353eea56c684dd3a960b21d6b9dd9db858b4d21b9ae0 特别推荐请回复下方关键词: & &说话就是生产力youkoucai推荐关注:100种收入来源100种收入来源caishangketangIOS草根扯淡营(gh_6211dbbb31a1) 
 文章为作者独立观点,不代表微头条立场
的最新文章
IOS开发者必备108个快捷键中包括xcode的快捷键,mac电脑常用快捷键,以及一些xcode插件使用的快捷键。熟练使用快捷键,是提升code效率的第一大绝招!让我们啪啪啪起来……如果你使用removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放。如果你想要在视图移除显示列表後保留并使用这个视图,你不许保留那个视图在他调用removeFromSuperview前。今天产品来了一个新需求,cell中的头像在不同的地方显示尺寸不一样。也就是说我需要在代码里修改IB里面的约束UITextView默认没有Placeholder属性,但是常常有这样的需求。不多说,直接上代码,一种运用UITextViewDelegate来实现,另一种就是类的扩展。setObject:forkey:中value是不能够为nil的,不然会报错。setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法苹果早前推出了iOS 9.3正式版本,加入了不少新功能,但当中的新功能如何使用呢?现在就为各位整合所有i虽说iOS 9.3有不少问题,但它更稳定了,你发现了吗?【TechWeb报道】4月1日消息,苹果今日发布了iOS 9.3.1的更新,主要修复在Safari及其他应用来源:IOS_Tips什么是BUG,简单点说就是,程序没有按照我们预想的方式运行。我比较喜欢把BUG分成两类:Cras▲点击上方“CocoaChina”关注即可免费学习 iOS 开发作者:乞力马扎罗的雪
原文对于软件开发而言进来看就对了。想在移动开发大餐中分一杯羹,体验最火最炫的技术?如果你有一个很好的想法,为什么不自己动手做一个App来实现它呢。即使你完全没有编程经验也没有关系,通过以下这▲点击上方“CocoaChina”关注即可免费学习 iOS 开发原文:How to become a Ent作者:yixiangboy
地址:http://blog.csdn.net/yixiangboy/artic在不少项目中,都会有图片轮播这个功能,现在网上关于图片轮播的框架层出不穷,千奇百怪,笔者根据自己的思路,用两个imageView也实现了图片轮播,这里说说笔者的主要思路以及大概步骤开发过程中,发现Xcode磁盘空间越来越少,今天就来一个Xcode磁盘空间大清理:通过移除对旧设备的支持;移除旧版本的模拟器支持移;除模拟器的临时文件等等方式..gh_6211dbbb31a1这里已有几个不错的ios帐号了,不乏像唐qiao,吴fawei这样的业内大神。他们分享的技术跟自己这个草根程序员的段位有一定的差距,so创建这个帐号,为跟我一样的还在苦练基本功的新手们!热门文章最新文章gh_6211dbbb31a1这里已有几个不错的ios帐号了,不乏像唐qiao,吴fawei这样的业内大神。他们分享的技术跟自己这个草根程序员的段位有一定的差距,so创建这个帐号,为跟我一样的还在苦练基本功的新手们!【ios】做ios开发的,有多少人对自己的收入不满意?_大家都在看_一览品牌
客服热线:
400-884-1001
【ios】做ios开发的,有多少人对自己的收入不满意?
【ios】做ios开发的,有多少人对自己的收入不满意?
来源:&&&&围观人数:2493
129***** 评 【ios】做ios开发的,有多少人对自己的收入...
129***** 评 【ios】做ios开发的,有多少人对自己的收入...
lhe*****vyntcucz 评 【ios】做ios开发的,有多少人对自己的收入...
lhe*****fzvhodb 评 【ios】做ios开发的,有多少人对自己的收入...
账&&&&号:
密&&&&码:
还不是会员,
大家都在看为什么 Android 工程师不喜欢写界面细节?
出来工作发现对接的 Android 工程师都不喜欢做界面的细节,每次 UI 给到很准确的颜色值、间距、字号大小……但出来的界面就是巨丑无比,和视觉稿相比差距太大,虽然 Android 很难匹配,但 Android 应用也有很多界面比较好的。
按时间排序
兄弟,我也是被美工整呀,设计出来的图那明显就是一张海报,而且还是不合格的海报。面对糟糕的界面。我是以前学设计的,后来才做的android,所以很纠结界面上的细节。场面很尴尬。匿了
我只能,多沟通,多学习
设计师设计师是什么
单位找了个美工 把我高兴的呀
终于不用我自己找素材东平西凑了,来了一个礼拜 我让我给我做个图 做了几次 不满意
我说慢慢做
不着急 现在一个月了 人家也不说
我也懒得问了
都是混日子
不仅仅是Android工程师,iOS,WEB等等1.关注点不同,技术更多关注是功能的实现。2.不清楚或不关心产品设计,对产品本身没有足够的热情。如果换成自己喜欢的手机、笔记本另当别论。举个例子,有个技术,根据高保真做成的UI差距甚远,多个版本都是如此。但他买了一台笔记本,为了看屏幕是否有坏点,使用工具对着屏幕可以比对很久,非常仔细。3.缺乏美感 对于对称、字体、颜色等不协调缺乏足够的辨别。很多人先天不足,后天也没有培养。4.非完美主义者。5.缺乏用户体验代入感,不以用户的角度体验产品。
我们最美系列的产品都很注重体验,从来没见过哪个伙伴因为视觉稿没标注就开腔骂人的。漂亮合理的视觉输出工程师是非常愿意去实现的,哪怕要花比平时多几倍的时间。为什么?大家都把产品当做是自己的孩子,每个人也在做自己的代表作产品,每天成千上万的用户使用产品带来的自豪感和满足感远远超过调整UI的繁复。所以从开发角度,不要把安卓UI开发之当做体力活,大家都在发现美创造美,你觉得不美,恶心开发不下去你不会去和设计师沟通吗?从设计师角度,不要把视觉输出稿标注颜色和像素就当做是沟通,文档邮件甚至im都解决不了沟通问题。产品在手机上显示的不好很多情况是沟通不畅的结果。最后,一切把设计师称作美工的都是耍流氓,你不尊重他的工作,即便是暂时的能力达不到,他自然也不会尊重你,从产品上都能看出来。啰嗦一句,分工没错,但别把分工当做流水线,迟早出问题。
切图和设计不是一个人,再加上我的理解,不晓得差到哪里去了一个按钮,切图就给了长宽,你是要左右边距固定,还是长度固定啊?
个人观点:这个问题是多方面因素造成的,拿安卓举例:首先,工程师的能力。之前我呆过的一家公司,工程师的水平高低差别很大,新来的工程师基本上不了解安卓的架构,即便你很明确的标出了坐标和数值,仍然不能做到位;其次,设计师的问题。如果你提供的guide或者图片资源很混乱,工程师看不懂,甚至需要他们自己去计算,这样的话你的设想的画面是肯定出不来的。我上上家公司,设计师不懂px转换dip的数值,还有哪些图片是相对和绝对对齐,这些知识盲点显然增加了工程师开发的难度。再次,就是看团队的融洽度了,设计师需要了解一点code,工程师也需要懂一些ui知识。团队配合需要磨合,要是彼此之间缺乏信任和尊重,总是互相推脱责任,再好的方案也不能转化成产品。
这个问题,基本适用所有做UI的。撇开程序员职业素质问题,一般答案就一个:你给的设计稿其实有很多问题,你自己没发现,是因为你缺乏一定知识。比如,一些参数其实技术上很难实现或者根本无法实现。我曾经遇到过网页设计师标注行间距的线,两端分别是字母g的下沿和i的那个点上沿。了解网页布局的人应该知道,行间距根本不是这么定义的。设计师不能只会Photoshop,得懂一些相关知识,会全面思考。软件界面不是画画,只考虑美学原理,而是得综合各方面情况进行设计。就像在建筑领域,建筑师得懂一些土木。否则,必然会出现诸如空中花园这种美学卓越但技术不可行的设计。不了解相关知识,那么遇到沟通差的程序员,他直接给出糟糕实现;遇到沟通积极的,你得来来回回反复折腾,最后还是浪费大家时间。
这个反正我是很不想吐槽我们的设计师了,总共只有一个!每次标图反正按照5s的尺寸发出来安卓没有专门的设计图,而对应的标图全是按照那个尺寸标,而且全是PX我们拿来只有全部除以2换算成dp使用在布局文件上,虽然出来相似度还是有80,但细节问题也没有深究什么,而且软件还更新的很勤一周一个版本,Ps:(好嫌弃我们的设计师很多界面都去模仿其它软件),我有时候问这个怎么这么设计不够简洁什么的他都说别个软件都这么做,反正听着好醉人
谁说Android工程师不喜欢写界面细节了,我就很喜欢,还经常跟设计师讨论呢,甚至给他建议呢,谁叫他老是按照iOS的规范来弄呢。你这么提问,会伤到我的
观点放在前面:招设计师都要求懂点代码,但是招工程师却不要求懂点设计,所以界面丑不微调怪设计咯?呵呵利益相关:由设计转型的产品狗,本质理工男有一次,工程师拿着我的规范问我:“你这样的规范不好,我们看着不清楚。”我问到:“那你们觉得好的规范是什么样?能不能找个例子给我看看?我可以努力去学习你的参考。”结果几天后,例子没找到,最后工程师说:“还是按着你的规范来吧,也是可以做的。”第一眼,工程师只是觉得你的规范不对,但是他们说不出来哪里不对,设计师要解释一下为什么要这么做,才能达成理解;现实生活中,也没看见所有工程师都说好,好到屌炸天的规范。(欢迎打脸)因为:指责别人永远是最容易,但是为什么不想想,别人这样做的理由?工程师总是说设计师不懂技术,出的规范不靠近工程师的习惯。但是工程师又曾几何时真正能把自己想要的表达出来?设计师和工程师真的是活在两个世界里面的,一个是感性,一个是理性。所以工程师表达“技术实现不了”的时候,拜托多说两句,解释清楚一点。不然的话在设计师眼里,别的工程师做的了,和自己工程师做不了,也掉工程师的bigger啊。我特意在我身后放了一把椅子,工程师来了我说您坐着,我们讨论。结果工程师还是站着,直男癌晚期了吗?懂什么叫人情不?是我表达想认真交流的意愿不够吗?所以怪我产品狗咯?工程师们,不是发个QQ就能懂的东西请面谈好吗?交流不够,能不能找找自己原因?(此处为撕逼)另外iOS和Android之争:最近在想做自己产品的iOS和Android的界面差异化,看了几个产品,只发现了Airbnb是为两个系统做了不同的界面(欢迎补充),我一个设计师真的忙不过来,想做差异化还要迭代,给工程师们跪了,我真的伺候不好。而且我还鼓吹设计师要用mac的,sketch独占啊,一人切图多人享用的酸爽能懂?再配合苹果手机,你叫我再去用Android?好,我是产品狗我去买呗,一般的设计师能有这个投入吗?还有就是Android的单位换算,真的不想一个设计大神懂那么好的数学,放开他的感性思维好吗?我一个人 VS 五个工程师的切图规范,也不想想为什么我还有精力/动力去抓细节?因为我认为一个好产品80%的功能完善/强大/易用,20%的界面友好。但是往往这20%决定了你和用户的距离。擅自引用
的话然而你觉得这对产品本身是件好事吗?这次帮别人圆了,就会有无数个下次。我们美工至今还会切出960*128像素大小的button背景,还是纯色的且没有highlight版。第一次按dp公式算好调好了,第十次呢?Google使用mvc的本意就是让设计师在xml里自己微调。既然不愿意学xml/不愿意装环境/不会用IDE,那我来写,但请你把自己的工作做好,做到位。我觉得我开个问题去吐槽工程师也很多设计师会回答。
写界面是挺蛋疼的,个人感受。对着别人的图纸做界面就像砌砖工人一样,如果非要做这个方向,我应该会选择去做设计师而不是写界面的工程师。我享受美丽的界面,我点赞也点给了设计师而不是工程师,所以工程师在这里的位置多么尴尬。
写界面还好,各种微调太耗时间
扯淡,界面设计师连细节都不在乎么???那特么叫什么界面设计,只会丟一张标注过的图那就是垃圾!!再说说程序如果他只是混日子那就别干了,设计或者是自己又或者是别人发现的问题一定要改!!收起自己的玻璃心吧,即使是某一方面的专家也会出问题!虚心接受别人的意见吧!!
因为android不光是界面,程序都很难写啊,界面怎么写都写不出ios的那种典雅的感觉,eclipse很难用有木有(虽然现在xcode一天崩溃的十几次是家常便饭),android写动画更是难上加难,为什么android应用质量跟不上,因为开发起来真的很难~~本人2年android开发,2年ios开发的领悟.
因为不是自己想做出来的效果,或者不认同却无法更改
不按照android的设计规范,完全照搬IOS,我是android程序员好吗。
管住手不去翻历史记录,肯定都是充满争议的内容。我认为 App 开发是 UI 的开发比数据、性能更重要的工作。Web 开发都已经独立出前端(甚至有偏 UI 和偏 JS 两种)的职位,App 开发也需要有人专注在 UI 部分。如果只是会写 Java 就去做 Android 开发,那他一定不是个合格的 App 开发者。
这种问题显然太绝对,而且完全取决于你的公司重不重视设计、设计师给出的设计稿规不规范。说到这我觉得完全有必要给你看下我厂设计师的设计稿。此时当然要祭出 Chris 的一篇回答了:所以,我觉得这压根儿不是 Android 工程师的问题,是你们的设计师给的界面稿让你看了就没有调的欲望吧?我记得我来魅族之前,就只知道当年
在发布会上说魅族对界面的调整是像素级的。后来直到去年我以软件工程师的身份加入魅族,才知道我厂对界面的调整压根不是像素级的,而是 “0.X” 像素级。你打开 Flyme 4.0 的系统升级,这么简单一个 App,可去年在做的时候,我的视觉小伙伴找我前后调整了4次界面,每次改 dimens.xml 都几乎是“几点几dip”级别的修改。但这些值完全不需要我去量或者测,因为视觉的小伙伴会直接告诉我哪里哪里差了几 dip。对了还有动画。熟悉 Android Animation 的都知道 Android 的动画有插值器的概念。现在 MX4 最新体验版应用中心,详情页下面那个安装按钮,点击之后会有一个往右缩进的动画。我记得刚开始做的时候用遍了所有的插值器都不能让视觉的同事满意。后来第二天,动画组的小伙伴直接给了我一份每秒 26 帧的值,从 0 到 1 ,精确到小数点后4位。有了这个,你只需要写一个自定义的插值器 implements TimeInterpolator,再重写一下 getInterpolation(float input) 就好,弄完之后效果一步到位,动画组的小伙伴也很满意。所以很多时候我不觉得这是 Android 工程师的问题,而是你们的设计对这块重不重视,另外还有就像
说的,他们能不能把自己的语言转化成工程师能听懂的语言,这点也很重要。
已有帐号?
无法登录?
社交帐号登录更多公众号:cppFans关注 C 和 C++ 啦最新文章相关作者文章搜狗:感谢您阅读写最少的代码,避免给自己找麻烦,本文由网友投稿产生,如果侵犯了您的相关权益,请联系管理员。iOS开发中 为什么好多人去写第三方的框架 出于什么原因?_百度知道}

我要回帖

更多关于 ios智能家居开发代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信