美文网首页代码片段iOS Developer程序员
开发中遇到的坑和部分心得3

开发中遇到的坑和部分心得3

作者: moxuyou | 来源:发表于2016-12-02 15:36 被阅读169次
1.iOS国际化

iOS国际化传送门

2.AutoLayout关于更新的几个方法的区别:

setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。
layoutIfNeeded:告知页面布局立刻更新。所以一般都会和 setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。
layoutSubviews:系统重写布局
setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始
updateConstraintsIfNeeded:告知立刻更新约束
updateConstraints:系统更新约束

3.Position and height are ambiguous for XXX 错误

今天在编码的时候碰到了这样一个错误,找了好久都找不到问题所在,试了好多办法,最后把控件的约束全部删除重新添加一遍就可以了。这个应该是Xcode的Bug。

4.开发的时候碰到这样一个需求,需要拖动选择数量,并且在拖动的过程中变换当前被选中的数字的颜色和大小。

于是博主利用UIcollectionView+UICollectionViewFlowLayout实现了下图效果。如果你也需要实现类似效果可以前往我的个人github下载。如果能够帮到你希望能给博主点上星星,谢谢支持_

collectionView拖动选择器.gif
如果你是iOS新人或者是之前没有用过这个控件的开发者,那么博主推荐一篇对该控件介绍相对比较详细的文章.UICollectionView很强大,非常有必要深入学习。
5.在导入使用第三方库的时候发现libsqlite有libsqlite3.dylib和libsqlite3.dylib两个库,他们到底有什么区别呢?

libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib。也就是说在这里你添加libsqlite3.dylib和添加libsqlite3.0.dylib其实是添加了同一个文件,没有区别,那为什么要添加libsqlite3.dylib呢?原因在于libsqlite3.dylib总是指向最新的sqlite3动态库,也就是说如果出现了新的动态库(如:libsqlite3.1.dylib)那libsqlite3.dylib将指向这个新的动态库(libsqlite3.1.dylib)而不在是libsqlite3.0.dylib了!

6.does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.

最近在新建工程想要进行真机调试的时候发现报了这样一个错误,这个是因为在xcode7之后Xcode新增了一个功能就是给在程序打包的时候对程序里面的代码进行“瘦身”处理。bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。但是这就要求程序里面的所有第三方代码都需要满足支持bitcode。如果你还是想要保留这个第三方那么你可以在Xcode的”Build Settings”->”Enable Bitcode”选项中将其设置为NO。

配置图片.png
7.控制器在跳转的时候有push和modal两种方式,push多层的时候我们能够用

[self.navigationController popToRootViewControllerAnimated:YES];来实现跳转到根控制器,但是你是否考虑过如果是modal的情况下怎么跨级跳转呢?
经过一顿操作博主找到了以下方法:

//.presentingViewController能够拿到跳转到自己的ViewController,所以想跳多少层就跳多少层,只要修改presentingViewController的个数。
//实验发现modal最底层是通过UITabBarController来实现的。- -
UIViewController *vc = self.presentingViewController.presentingViewController.presentingViewController;
[vc dismissViewControllerAnimated:YES completion:nil];
8.给大家分享几个加密分类

百度云盘地址
密码:8pkk

加密分类.png
9.给大家分享一个比较详细的地址plist文件。

百度云盘地址
密码: rqr6

中国省市区plist文件.png

10:使用XIB可以加快开发速度,除了拖控件,还可以在XIB中直接把手势添加到某个控件上面,剩下不少垃圾代码的编写,实在方便.但是,方便中有也有一些坑等着你踩.我习惯用[[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class])owner:nil options:nil] lastObject]来加载XIB,所以,我遇到了一个坑,异常信息为:

reason: 'invalid nib registered for identifier (WMNearByFellowVCCellID) - nib must contain exactly one top level object which must be a UITableViewCell instance

再看下面的截图,资深人士应该知道原因了吧?


Paste_Image.png

其实,当你在XIB中添加手势(无论添加给谁),它就是一个文件的了,所以,你加载文件,就有可能加载到了手势,而不是cell,所以就会出现上面的异常.
解决方式:使用[[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class])owner:nil options:nil] firstObject]加载XIB,并且不能通过注册的方式来做cell的循环利用.

相关文章

  • 开发中遇到的坑和部分心得3

    1.iOS国际化 iOS国际化传送门 2.AutoLayout关于更新的几个方法的区别: setNeedsLayo...

  • 开发中遇到的坑和部分心得1

    1.分享的时候如何监听应用是否已经安装 2."error":"userinfo error","pos":"5" ...

  • 开发中遇到的坑和部分心得2

    1.mac下删除项目目录中所有的.svn文件夹 通过下面这个方式可以成功删除(以尝试)sudo find /Use...

  • iOS开发中遇到过的坑

    iOS开发中遇到过的坑 iOS开发中遇到过的坑

  • 开发中遇到的坑

    1. tableView使用时发现的问题 1.1 tableView 加载cell 崩溃:_configureCe...

  • 开发中遇到的坑

    1.android N开始,必须用fileprovider来获取uri中的文件。 2.android O开始,安装...

  • 开发中遇到的坑

    WKWebView 设置userAgent 代码如下: 根据上面代码设置后,可能会在iOS11以上的系统中第一次设...

  • Vue组件开发-高级玩法

    在文章《Vue组件开发三板斧:prop、event、slot》中聊了常用的组件开发常用API和一些采坑心得,这里,...

  • App定位和地图的那些坑

    开发App时会遇到各种坑,本文分享我们在iOS/Android系统中定位和地图中遇到的坑,以及携程App的解决方案...

  • 记一次坑

    初次遇到的坑 在最近的开发中,又遇到了之前的坑,再次体会到了需要使用immutable的重要性。js中数组和对象的...

网友评论

  • 圍繞的城:那个功能我也在做,滑动数字变颜色
    moxuyou:@圍繞的城 嗯,挺常用的功能

本文标题:开发中遇到的坑和部分心得3

本文链接:https://www.haomeiwen.com/subject/rdafmttx.html