IOS开发基本技能 CALyer 有一个属性叫做contents,这个属性的类型Swift中定义为Any,OC中被定义为id,意味着它可以是任何类型的对象。在这种情况下,你可以给contents属性赋任何值,你的app仍然能够编译通过。但是,在实践中,如果你给contents赋的不是CGImage,那么你得到的图层将是空白的。 如下图所示,为了通常我们赋值为CGImage后,图片将会填充满整个图层,如果图片的分辨率与图层尺寸不成比率,就会造成图片拉伸现象。 要解决图片的拉伸问题,得使用图层的contentsGravity属性。CALayer与 contentMode对应的属性叫做contentsGravity。contentsGravity可选的常量值有以下一些: 我们可以使用 kCAGravityResizeAspect 属性值避免被拉伸填充图层 当然未填满的区域还是已背景颜色显示。 技能列表 技能列表 1、内存管理,不需要防御式编程,但是大脑一定要清晰的知道自己使用的 对象的内存情况。 2、UIKit,熟练掌握,能不看文档就知道常用的控件有哪些方法以及能做 什么。 3、Storyboard(xib) 4、Auto Layout 和 Size Classes,前者更重要 5、各种手势处理 6、KVO\KVC 7、GCD 8、delegate(不要与代理设计模式混淆) 9、Block 10、Notification 11、APNs,远程通知 12、视图状态保存 其实开发中大多数问题都是“临时”遇到的问题,只有平时积累的够多,才能游刃有余的解决。上面的这些技能只能算是抛砖引玉,更多地学习主要还是在自己遇到问题或者遇到不懂的知识点的时候,每一个困难都是财富,都是一个学习的机会,像 CoreData、设计模式之类的技能你难道不学吗?兴趣和遇到问题的切入点很重要,不要敷衍自己,多看教学视频,教学视频看的越多,越会觉得自己需要学的就越多。 另外,技能这块也不要把关注点全放在 iOS 的平台技术上,做开发的一定不能偏科,有时候你觉得自己只是某一方面比较薄弱,比如说“我就是记忆力不行”,其实差距是全面的。 怎样成为一个高手?显然高手总是通过学习产生的。 关于Objective-C 和 Swif Swift 目前非常不稳定,连 Xcode 都对它兼容的不好,每次 Swift 有个稍大的更新就像是把项目推倒重来,而且也不可能完全只用 Swift 来开发一个项目,基于 Objective-C 和 C 的框架有很多,iOS 是开发离不开 C 的。 除此之外,我觉得 OC 比 Swift 更加灵活,前者更依赖运行时,后者几乎就是编译时,OC 能做很多 Swift 做不了的事情,如运行时的关联对象等,不过这并不是说 Swift 不重要,只是一定要排一个优先级的话,我觉得短期内 Swift 无法对 Objective-C 造成太大影响,所以先学好 OC 还是更好一些,而且技多不压身嘛。 |
|