iOS开发的那些坑(贰)

当时光流逝,记忆也开始散去,猛然回头却发现自己还在原地。

目前做iOS平台开发有两种语言,这就导致了一个项目组可能同时存在使用Swift和使用OC的开发者,这就导致了对于语言选择的分歧。此外我相信网上大部分的代码块还仍然是OC的,那么如果纯用Swift,有时候就需要把一整段的OC转换成Swift,而重复是邪恶了。同时用过Swift的都知道,OC的那种啰嗦的语法真的很烦人。

To be or not to be, that is the question.

在开发中,我们总是会遇到这样一种情况——我以前遇到过这个问题,可是我也不记得当时是怎么解决的,反正肯定有solution——然后又花了一定的时间去解决这个问题。有时候我们解决了一个问题(或者绕过了一个问题),但是并没有仔细去思考这个问题的由来与你真正的解决方法,这就会导致下次遇到它时还会跳进同一个坑。人不能两次踏入同一条河流,却总是不断地踏入同一个坑。

KK笔记:kknotes.com
本文链接地址: iOS开发的那些坑(贰)

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

iOS开发的那些坑

最近重新拿起了iOS的开发,使用OC和Swift混编,碰到了一些比较棘手的问题,在这里记录下来,方便自己以后或他人不再入坑。这篇文章的内容包含:

  1. UITableViewCell的真实结构
  2. 在iOS的环境下使用正则表达式
  3. 如何优雅的隐藏tabbar
  4. 如何修改navigationbar的颜色
  5. 运行时修改使用autolayout的view
  6. navigation controller子view偏移问题
  7. CoreData的使用总结
  8. 解决git的Xcode冲突

1.UITableViewCell的真实结构

目标是想把UITableview在editing模式下的drag按钮去掉,换成自己的样式,但又想保留原生拖动排序的行为,所以研究了很多方法,最后还是找到了UITableViewCell的结构,并将拖动按钮替换。不多说,上代码。


//打印出来的自定义的cell在editing模式下的结构    
(lldb) po self
<QKZhi_iOS.EditingCell: 0x7c148800; baseClass = UITableViewCell; frame = (0 0; 320 56); autoresize = W; layer = <CALayer: 0x7d086b40>>

(lldb) po self.subviews
 5 elements
  - [0] : <UITableViewCellContentView: 0x7d086d10; frame = (38 0; 242 55.5); opaque = NO; gestureRecognizers = <NSArray: 0x7d0882b0>; layer = <CALayer: 0x7d086de0>>
  - [1] : <_UITableViewCellSeparatorView: 0x7d087c40; frame = (15 55; 305 1); layer = <CALayer: 0x7d0852c0>>
  - [2] : <_UITableViewCellSeparatorView: 0x7b163240; frame = (15 55.5; 305 0.5); layer = <CALayer: 0x7b162de0>>
  - [3] : <UITableViewCellEditControl: 0x7b164700; frame = (0 0; 47 56); opaque = NO; layer = <CALayer: 0x7b164950>>
  - [4] : <UITableViewCellReorderControl: 0x7b164d10; frame = (268 0; 52 56); opaque = NO; autoresize = LM; layer = <CALayer: 0x7b164f60>>

(lldb) po self.subviews.last
   Optional<UIView>
    - Some : <UITableViewCellReorderControl: 0x7b164d10; frame = (268 0; 52 56); opaque = NO; autoresize = LM; layer = <CALayer: 0x7b164f60>>

(lldb) po self.subviews.last?.subviews
   Optional<Array<UIView>>
     Some : 1 elements
      - [0] : <UIImageView: 0x7b165130; frame = (15 24; 22 8.5); opaque = NO; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x7b165210>>

(lldb)

KK笔记:kknotes.com
本文链接地址: iOS开发的那些坑

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

用Swift开发二维码扫描器教程

 

(原文:Building a QR Code Reader in Swift 作者:Simon Ng 译者:xiaoying )
我相信大多数人都知道二维码(QR code)是什么,如果你对这个概念还不甚了解,那么看看下边那张图就知道了。

二维码是在二维平面里展示的一种条形码,开发者是Denso。最初它只是在制造业用来进行零部件跟踪,但是随着时间的发展,今天二维码已经在消费领 域变得非常流行,在消费领域二维码通常会被用来编码一个登录页面或者推广页面的URL。与传统的条形码不同的是,二维码在水平和垂直方向上都可以存储信 息,这样做的直接好处就是在二维码里可以同时以数字和字符的格式存储大量的信息。但是在这里我不会去探讨太多二维码的技术细节。如果感兴趣,可以去二维码 的官方网站了解更多信息。

KK笔记:kknotes.com
本文链接地址: 用Swift开发二维码扫描器教程

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

使用iPhone为Apple Watch制作动画

(原文:Make Animations for APPLE WATCH Using iPhone 作者:Andy Drizen 译者:xiaoying)

无论要做一个像hamburger button 这样小的特性还是要做一个全新的用户界面,动画都是在iOS应用开发中非常重要的一环。一个重要的原因是因为苹果已经在UIKit和Core Animation的库中集成了很多常规特性,这使得对于开发者而言,实现这些动画变得非常简单。在实际开发中可以通过一些参数来控制这些动画的属性(例 如duration, easing, 延迟, 重复次数, auto reserve),苹果还提供很多其他可以做动画 (例如,通过指定frame,背景颜色,透明,transform)的控件,这些控件可以拿来即用,我们确确实实的被它们给宠坏了。那么,如果我们在一个 没有这么美好的平台下工作呢?

KK笔记:kknotes.com
本文链接地址: 使用iPhone为Apple Watch制作动画

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

iOS开发者如何提高自己的水平?

(原文:”http://www.bignerdranch.com/blog/leveling-up/” Leveling Up 作者:Mark Dalrymple 译者:xiaoying )

levelUp.jpg

不知道你有没有参与或是旁观过iOS开发的黑客马拉松,我觉得这是非常好的事情,在这里人们几乎不睡觉,一起脑洞大开,在Objective-C运 行时环境下,利用iOS的相关知识攻城略地,度过激情四射的72个小时。对于我来说,它们让人心潮澎湃,我的所有平台知识都在头脑风暴下接受考验,我的技 能也得到锤炼。

在某场活动里有一次我和我们组的一个伙伴在聊天的时候,他问我:“MarkD,我要怎么样才能学到所有那些知识的细节?我觉得我现在有点迷茫,我的 编程工作好像就是使用tableview和一些其他有的没的。”这是个让人不敢轻易回答的问题,尤其当这个问题是从一个经验丰富的工程师口里问出来的时 候,像“呃,你只要不断地去实践就好了”这种答案肯定是不负责任的。

KK笔记:kknotes.com
本文链接地址: iOS开发者如何提高自己的水平?

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

Swift项目实践经验

本文由CocoaChina翻译组成员xiaoying翻译自http://making.duolingo.com/,原文:Real World Swift

最近我们刚刚发布了一款新的基于Swift的应用,当时还被苹果着重推荐了,目前它已经获得了相当多的用户。在这片文章里,我们想要分享一下这些经验,把我们对于这个新语言的看法呈现给大家,并且指出Swift中那些可以让我们写出更好程序的新特性。

这不是一篇Swift入门指南,这篇文章的受众是那些对Swift并不是很熟悉,而且好奇Swift在真实的编程过程中是怎么样子的开发者。我们会引用一些技术概念并且会在合适的地方提供关于它们的入门指南和文档的链接。

KK笔记:kknotes.com
本文链接地址: Swift项目实践经验

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

Cocoa之殇

原来我译作名字为“Cocoa之殇”,被编辑改名为“Mattt Thompson:Cocoa之死”,终于能改回原来的名字了

http://www.cocoachina.com/swift/20150107/10858.html

译者注:Mattt从分析Swift标准库的角度出发,分析了Swift带来的一些新的变革和Swift的未来发展方向,并断言,未来Swift肯 定会渐渐替代Cocoa,而Cocoa作为一个过去十分成功的技术,也将渐渐被新时代所抛弃。http://www.cocoachina.com /swift/20150107/10858.html

(原文:”http://nshipster.com/the-death-of-cocoa/The Death of Cocoa” 作者:Mattt Thompson 译者:xiaoying )

------------------------

KK笔记:kknotes.com
本文链接地址: Cocoa之殇

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading