iOS基础
chokshen
技术改变人生!
展开
-
mac配置环境变量
通常我们在安装某个命令行工具时,需要手动配置系统环境变量,配置方法如下:1.编辑环境变量配置vim ~/.bash_profile 2.保存环境变量配置source ~/.bash_profile原创 2021-05-18 11:11:06 · 296 阅读 · 0 评论 -
iOS如何判断相册中的照片为同一张
1、Hash法extension UIImage { var MD5: String { guard let imageData = self.jpegData(compressionQuality: 1) else { return "" } let input = NSData(data: imageData) let digestLen = Int(CC_MD5_DIGEST_LENGTH) let result = Uns原创 2021-02-01 09:52:29 · 1093 阅读 · 0 评论 -
Segmentation fault: 11
打包时报错:解决方案:原创 2021-01-28 14:19:34 · 723 阅读 · 0 评论 -
No “iOS Distribution“ signing certificate matching team ID “xxx“ with a private key was found
解决方法: 删除别人的打包证书创建自己的打包证书,这时自己的证书就是可用的了,可以进行打包了; 找到可用打包证书的人,从他的电脑上导出一个这p12文件给你,你用他的证书来进行打包; 以上两种方案肯定能解决这个问题,如果不能解决请重新打开Xcode。 ...原创 2020-11-14 12:13:01 · 7047 阅读 · 2 评论 -
Xcode12: CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compile
选中项目PROJECT—Build Settings—Excluded Architecture,设置release模式下Any iOS SDK的值为armv7,因为iOS14 SDK不再支持armv7架构的手机,所以需要将armv7剔除。原创 2020-09-30 11:45:51 · 5938 阅读 · 4 评论 -
查看.framework以及.a的库文件支持的架构
.framework1.进入到framework目录下cd /Users/.../xxx.framework2.输入命令lipo -info xxx3.结果Architectures in the fat file: xsdkFramework are: armv7 arm64 不支持模拟器.alipo -info /Users/.../xxx.aArchitectures in the fat file: /Users/.../lib/xxx.a are: armv7 arm原创 2020-09-30 11:40:00 · 1731 阅读 · 0 评论 -
iOS表视图分割线的总结
1.在自定义单元格的底部或者顶部画一条分割线,这种方法简单粗暴,而且可以在任意位置绘制,相对也比较灵活 let seperateLine = UILabel() seperateLine.backgroundColor=UIColor.groupTableViewBackground2.利用SectionHead和SectionFoot的高度来实现如果用这种方法来实现分割线的效果,一原创 2017-08-17 13:44:58 · 951 阅读 · 0 评论 -
监听UITextField内容变化的两种方式
1.代理方法 /// delegate方法 /// /// - Parameters: /// - textField: 变化前的text值 /// - range: 当前光标的位置 /// - string: 输入的字符 /// - Returns: 是否改变内容 func textField(_ textField:原创 2017-09-28 22:43:15 · 4238 阅读 · 0 评论 -
Xcode打包ipa后或者上传到iTunesConnect后出现的黑屏或者崩溃的问题
检查在Achieve的时候Scheme的运行模式,必须把运行模式设置为Release,否则会出现很奇怪的问题,例如跳转黑屏或者崩溃:Scheme -> Edit Scheme -> Build Configuration...原创 2018-02-26 16:55:49 · 835 阅读 · 0 评论 -
terminating with uncaught exception of type NSException
项目中遇到一个奇葩的bug,只抛出这一句话,没有任何附加错误提示信息,而且crash堆栈没有定位到具体函数,然后上网搜索各种资料,都没有找到答案。导致此类bug的原因很多,通常是因为粗心造成的,就是写出了错误代码,但是编译器没有检测出来,这里分享一下fix此类bug的方法:首先是通过断点大致确定crash所在的函数,然后仔仔细细地去检查这个函数的每一句代码,任何一个字母都不要放过,然后你会找到答案...原创 2018-05-11 15:25:18 · 15696 阅读 · 0 评论 -
设置edgesForExtendedLayout属性时引发的导航栏背景颜色偏差问题
最近项目要将导航栏背景色由橙黄色换成纯白色,以为改一句代码就能解决的事:self.navigationController?.navigationBar.barTintColor = UIColor.fwNavigationBarColor谁知道设置完后,有部分控制器的导航栏背景色出现了问题,不是纯白色,而是看起来想白色和黑色的混合色,后来发现这些控制器都有一个共同点:self....原创 2018-10-15 09:17:38 · 1364 阅读 · 0 评论 -
第一次上传本地项目至GitHub
1.在github创建远程仓库2.上传本地项目在上传项目前,请确保你的电脑配置了Github SSH 公钥,这是用于连接远程仓库的。如果没有配置,请自行百度。git init //初始化本地仓库git add * //加入所有项目git status //检查状态 如果都是绿的 证明成功git commit -m "first commit"//提交到要地仓库,并写一些注...原创 2019-01-02 21:19:43 · 137 阅读 · 0 评论 -
关于xib、Masonry和手动计算布局的灵活运用
xib:基于Autolayout,适用于简单、静态的布局,优点是效率高,缺点是不灵活,调整起来很麻烦Masonry/SnapKit:对Autolayout的封装,只是用代码来写,相较于xib灵活,可以做屏幕适配,尤其适合自适应高度的布局,比如说单元格中的布局手动计算:适用于复杂、动态布局,比如说:单元格动态高度(根据数据源来布局)、屏幕适配,优点是能适应所有条件下的布局,缺点是效率低、横竖...原创 2017-06-03 14:25:09 · 684 阅读 · 0 评论 -
关于tableview的单元格点击无响应或者最后一行显示不全
在自定义tableview的时候,通常需要我们自定义tableview的frame,如果tableview的边界超过父试图,例如它的高度大于父视图,就会出现单元格点击无响应或者最后一行显示不全的情况,这种情况去看UI hierarchy是看不出来的。第一种情况是因为事件的响应机制决定的,当子视图的边界超过父视图的时候,事件将无法响应;第二种情况就是因为tableview的frame超出边界,所以导原创 2017-09-06 11:19:21 · 1887 阅读 · 0 评论 -
iOS开发—CocoaPods安装与使用
网上查了很多关于CocoaPods安装与使用的资料,有很多但是多少都不全,于是就将大神们的东西综合了一下,希望能帮到新手,其实我也是新手,哈哈。一.CocoaPods的安装1.打开终端2.终端输入ruby -v,查看自己的ruby版本walldeAir:~ wall$ ruby -vruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-原创 2016-10-09 22:19:05 · 382 阅读 · 0 评论 -
[[NSBundle mainBundle] pathForResource: ofType:]读不到文件的问题
先用NSLog输出UIImage对象,如果为空就说明创建UIImage对象时出现问题,所以就是路径名或者图片格式出现问题,下面这种路径名就有问题: NSString *imagePath=[[NSBundle mainBundle]pathForResource:@"school3" ofType:@"png"]; UIImage *image=[UIImage imageW原创 2016-11-15 23:15:25 · 3998 阅读 · 0 评论 -
UITableView属性及方法大全
UITableView-------表视图--继承UIScrollView并遵守NSCoding协议属性frame-------------设置控件的位置和大小backgroundColor--------设置控件的颜色style--------获取表视图的样式dataSource---------设置UITableViewDataSource的代理转载 2016-12-03 17:31:20 · 360 阅读 · 0 评论 -
关于CGAffineTransformMakeRotation和CGAffineTransformRotate的区别
CGAffineTransformMakeRotation基于控件初始位置的形变,不累加;CGAffineTransformRotate基于当前transform参数的形变,累加。其他的位移,放大或缩小同理。原创 2016-11-26 20:51:25 · 1565 阅读 · 0 评论 -
解决TableView刷新指定行时闪烁的问题
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:weakSelf.indexPathSelected.section]; [weakSelf.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationNone]原创 2017-02-09 20:58:31 · 2053 阅读 · 0 评论 -
切勿混淆串行队列、并行队列和同步、异步
串行队列:按照指派的顺序来执行任务dispatch_queue_t serialQueue=dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL); int i; for (i=0; i<100; i++ ) { dispatch_async(serialQueue, ^{ NSLog(@原创 2016-10-23 11:30:48 · 1846 阅读 · 1 评论 -
遍历UIView的所有子视图
1.UIView的子视图没有嵌套的情况 for (UIView *subView in self.view.subviews) { NSLog(@"%@",subView); }或者 for (int i=0; self.view.subviews.count; i++) { NSLog(@"%@",self.view.subview原创 2017-04-12 21:19:31 · 12563 阅读 · 0 评论 -
加载或者跳转视图控制器的四种方式
1.xib文件 TestViewController *nextViewController=[[TestViewControlleralloc]initWithNibName:@"TestViewController"bundle:nil];//通过xib文件加载视图控制器 [selfpresentViewController:nextViewCont原创 2016-10-29 21:30:08 · 660 阅读 · 0 评论 -
xib自定义单元格的高度
在使用xib自定义单元格时,应该在tableview的代理方法中返回自定义单元格的高度,而且我们返回的应该是单元格Content View的高度:原创 2017-07-11 15:08:08 · 259 阅读 · 0 评论 -
懒加载的使用
懒加载顾名思义就是延迟加载,使用某一个对象时才加载。以下是几种常用到的懒加载场景:1.某一个视图并不是进入主界面后就马上加载的,例如点击某个按钮才添加某一个视图2.某一个对象需要频繁修改自身的值,例如下拉刷新时数据项的修改,这个时候需要使用懒加载,在懒加载的方法中保证只分配一次内存,修改的是同一个数据项3.单一个对象需要配置很多属性的时候,例如tableview,这个时候在懒加载的方法原创 2017-07-17 11:11:18 · 633 阅读 · 0 评论 -
iOS添加导航栏的三种方式
目前为止,添加导航栏的方式有三种:1.直接拖NavigationController视图控制器;2.直接拖NavigationBar控件;3.如果先拖的是ViewController或者TableViewController然后嵌入NavigationController,具体步骤是选择视图控制器点Editor-Emeded-NavigationController;原创 2016-08-30 20:56:11 · 4926 阅读 · 0 评论