![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发常见问题及解决方案
普通网友
这个作者很懒,什么都没留下…
展开
-
Xcode升级后插件不能用了怎么办?
有时候我们将Xcode升级后发现之前的插件不能用了,失效的原因是因为UUID的问题。解决方案如下:关闭Xcode在终端中输入线面命令:find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} D原创 2016-01-12 13:56:17 · 1762 阅读 · 0 评论 -
Objective-C UITextField 禁止粘贴
新建一个UITextField的子类,重写canPerformAction:withSender:方法并返回 NO 即可禁止粘贴。- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ if (action == @selector(paste:)) return NO; return [super c原创 2016-05-19 13:21:18 · 2615 阅读 · 0 评论 -
Objective-C截取字符串时emoji表情的处理
我们在开发中会经常遇到限制字符串长度的情况,如输入框限制输入字数,我们会经常使用substringToIndex进行字符串截取,这样做有一个潜在的问题,那就是当截取的index恰好是一个emoji表情的时候,因为一个emoij在字符串的length并不等于1,这样就会把emoji表情分割开来,从而造成整个字符串不显示或者最后一个字符是乱码的情况。 起初我发现截取一半的emoji的时候吧字符串进原创 2016-09-09 10:05:13 · 6743 阅读 · 3 评论 -
Cornerstone的Merge方法
网上看了一些文档发现时错的,这里给大家介绍一下吧: 点击要合并到的working copies,然后点击顶部的merge按钮: 之后选择Cherry Pick Changes选项: merge from即为从哪里合并,下面的选择框则为合并那次提交的变化。如果两个工程版本不是最新的需要更新到各自最新提交的版本。 选择要合并的版本之后点击Merge Changes即可。之后运行没问题的话原创 2016-09-09 10:18:28 · 7386 阅读 · 0 评论 -
Objective-C延迟执行方法总结
1.performSelector 这种方法使用起来比较方便,也可以传递参数: [self performSelector:@selector(delayAction) withObject:nil afterDelay:2];系统也提供了取消要执行的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self sele原创 2016-08-29 14:29:01 · 8196 阅读 · 0 评论 -
Objective-C用UIBezierPath画图
UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”,(下图是项目里的一条自定义消息类型) 还有下面这个: 这样一个不规则的图形我们只需要在规则的矩形View右边紧挨着画一个小三角即可。下面的代码使用UIBezierPath画了一个三角形:- (void)drawTriang原创 2016-08-31 15:02:50 · 3336 阅读 · 0 评论 -
Objective-C文字换行方式(解决英文在行末时的换行问题)
我们在做文字信息展示的时候会遇到这种情况:中文+英文(数字),当英文或者数字在行末并且过长的时候,这种情况下系统会默认把整个英文换到下一行展示。这样就会造成上一行显示不满的情况。 如果是UILabel的话直接设置lineBreakMode属性即可:label.lineBreakMode = UILineBreakModeCharacterWrap;UILineBreakModeCharacterW原创 2016-08-10 14:47:48 · 8649 阅读 · 0 评论 -
升级iOS10后访问相机、相册、麦克风、通讯录闪退
升级了iOS10和xcode8,发现访问相机、相册、麦克风、蓝牙、日历等时会出现闪退,控制台给出这样的信息:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCame原创 2016-09-19 17:57:41 · 2415 阅读 · 2 评论 -
在UIView页面执行pushViewController操作
由于UIView没有navigationController属性,所以不能直接push操作这里介绍两种解决方案,第一种是常用的block:1.在UIView的.h文件中定义一个bock属性:@property (nonatomic, copy)void(^MoreSearchblock)();2.在UIView的.m文件的要push操作的方法中执行block:self.MoreSear原创 2016-01-08 14:57:33 · 6132 阅读 · 0 评论 -
Objective-C图片切圆角优化
iOS开发中我们会经常对图片进行切圆角操作,常见的做法是这样的: myImgView.layer.cornerRadius = 25; myImgView.layer.masksToBounds = YES;其中masksToBounds表示视图的图层上的子图层,如果超出父图层的部分就截取掉;还有clipsToBounds,是指视图上的子视图,如果超出父视图的部分就截取原创 2016-06-14 17:41:00 · 4293 阅读 · 0 评论 -
Objective-C实现视图透明度的渐变
如题需求,试过增加渐变layer层,和添加阴影效果,但都是把原来的视图遮住了,效果都不理想。看文档中发现CALayer中有这样一个属性:@property(nullable, strong) CALayer *mask;把它设置为透明度渐变的效果即可实现视图的透明度的渐变需求。下面以一个图片的透明度渐变写了一个demo: 首先添加图片:- (void)viewDidLoad { [supe原创 2016-11-01 11:07:47 · 5400 阅读 · 0 评论 -
Objective-C页面消失或出现时,判断是pop还是push操作
当前的controller消失的时候回先后执行- (void)viewWillDisappear:(BOOL)animated;-(void)viewDidDisappear:(BOOL)animated;这两个方法;在这两个方法中进行判断消失的方式即可:- (void)viewWillDisappear:(BOOL)animated { NSArray *viewControllers原创 2016-03-07 16:58:27 · 7955 阅读 · 2 评论 -
UITableView索引
在做类似通讯录相关的功能时会用到tableView的索引,一个section会在一个索引目录中。通常会把联系人第一个字的首字母作为一个索引。点击对应索引,tableView会自动跳转到对应的section。 设置索引背景色: _OfficialListTableView.sectionIndexBackgroundColor=[UIColor clearColor];设置索引文字颜色:原创 2016-03-28 16:50:32 · 1579 阅读 · 0 评论 -
如何处理iOS中照片的方向
用手机拍摄的照片发送到PC媏后方向改变了?想必开发过跨平台IM程序的人都经历过吧。使用过iPhone或者iPad的朋友在拍照时不知是否遇到过这样的问题,将设备中的照片导出到Windows上时,经常发现导出的照片方向会有问题,要么横着,要么颠倒着,需要旋转才适合观看。而如果直接在这些设备上浏览时,照片会始终显示正确的方向,在Mac上也能正确显示。最近在iOS的开发中也遇到了同样的问题,将拍摄的照片上转载 2016-01-20 15:05:45 · 3028 阅读 · 0 评论 -
Cornerstone无法查看log解决办法
如果你使用Cornerstone管理svn,第一次查看log的时候悲催的选择了Download而不是Never,那么恭喜你你将无法查看log,进而也无法回滚了。解决方案如下:退出Cornerstone打开终端,执行 defaults delete com . zennaware . Connerstone HistoryCacheUsage前往文件夹 ~/Library/Cache原创 2016-01-05 14:18:02 · 7592 阅读 · 0 评论 -
ARC和MRC混合使用
在一些项目中尤其是做迭代的项目经常会出现MRC的项目,但是我们习惯了ARC环境,反之也是一样。这是我们不必去修改代码去掉release之类的,要找如下方案去做就可以了。项目 -> Build Phases -> Compile Sources 找到要修改的文件,如果这个文件是MRC,要适应ARC的工程,双击文件在弹出的文本框内输入:-fno-objc-arc如果是MRC工程添加ARC文件则原创 2016-01-12 15:14:02 · 3619 阅读 · 0 评论 -
Objective-C监听键盘删除按钮
响应键盘删除按钮的事件,常规的是根据UITextfield或者UISearchBar的didChange代理方法中内同的改变来判断是否进行了点击删除按钮。但是当输入框没有内容时,就无法捕捉到删除的事件了。例如微信选择好友时用键盘的删除按钮删除已选择的好友头像。 实现的思路是利用OC的运行时机制,替换掉系统的删除runtime函数。首先建一个UItextfield的category:UITextFi原创 2016-03-28 18:10:13 · 5694 阅读 · 0 评论 -
UISearchBar限制输入字数以及输入到最大限值以后不能删除
在UISearchbar中有限制输入的代理方法,在里面设置即可- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text NS_AVAILABLE_IOS(3_0); // called before text changes{原创 2016-03-18 12:26:23 · 2952 阅读 · 0 评论 -
Objective-C利用正则表达式进行搜索时正则关键字的转义
利用正则表达式进行搜索时如果不对正则关键字进行转义常常会造成搜索结果的错误,如输入?就会匹配到全部结果,就需要对搜索关键字进行转义处理:$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 也匹配‘\n′或‘\r′。要匹配 也匹配 ‘\n' 或 ‘\r'。要匹配 字符本身,请使用\ $。( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配原创 2016-03-07 17:35:42 · 2841 阅读 · 0 评论 -
Objective-C多个UIButton同时点击问题
一个页面的两个或者多个button如果不设置的话是可以同时点击的,如果事件冲突的话就会出问题,如“发送”和“取消”。一些push操作也会push多个页面,交互十分不友好。解决方法是设置button的exclusiveTouch为YES。cancelBtn.exclusiveTouch = YES;ExclusiveTouch的作用是:可以达到同一界面上多个控件接受事件时的排他性,从而避免一些问题。也原创 2016-02-01 11:25:14 · 4461 阅读 · 1 评论 -
Objective-C同时添加单击和双击手势冲突
有时我们会在一个页面上添加单机和双击两个手势,那么问题就来了,不作处理的条件下双击手势的事件是触发不了的,因为点一下出发了单机手势的事件。只需要添加一句代码即可解决: UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(singl原创 2016-01-14 18:07:33 · 5342 阅读 · 0 评论 -
Objective-C多次push操作后快速连续返回问题
当多次push操作进入较深的页面后,并且做了隐藏TabBar的操作,快速连续返回到根视图时基本上都会出现TabBar不显示或者navigationItem按钮错乱的问题,只要你返回按钮按得足够快,这个问题几乎是必现的。问题的原因在于快速返回时,中间的页面还问加载完就继续按了返回按钮。这里提供一种解决方案是不允许用户快速返回;具体做法是当执行push操作时把返回按钮隐藏,当pop回来时再把返原创 2016-01-14 12:20:19 · 1921 阅读 · 0 评论 -
Objective-C修改cell左滑按钮背景色
TableView编辑时左滑按钮的默认背景色是红色的,如图所示: 开发中可能会有改变这个按钮背景色的需求,如微信的通讯录左滑备注按钮就是灰色的,实现这个需求我们需要自定义cell,在自定义的cell中重写layoutSubviews这个方法,找到UITableViewCellDeleteConfirmationView修改它的背景色即可。- (void)layoutSubviews{原创 2016-04-12 18:11:31 · 3305 阅读 · 1 评论 -
解决升级xcode8后XIB中一些视图不显示问题
近期升级了xcode8,遇到了xib视图一些空间不显示的问题,调试时发现时约束的问题,把那些不显示的视图用masonry重新约束了一下就可以了。可是cell上面重新加约束还是不行,最后定位到是图片切圆角的问题,原来的代码实在UIImageView的分类中加入了这样一个方法:-(void)setCircular{ self.layer.cornerRadius = self.frame.siz原创 2016-09-26 13:14:28 · 8048 阅读 · 3 评论