ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:521.38KB ,
资源ID:10949017      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10949017.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(iOS开发中遇到的那些坑.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

iOS开发中遇到的那些坑.docx

1、iOS开发中遇到的那些坑iOS开发中遇到的那些坑从事iOS开发有些年月了,从最开始的磕磕绊绊,不知所措,到现在的遇到困难都能快速做出最佳方案处理,中间经历了不可或缺的痛苦。在项目开发中,本人有用印象笔记记录的习惯,所以很多重复出现的坑,很快迎刃而解,而不在同一个地方摔倒两次。为此,特意总结了一下开发中经常遇到的坑,有些可能和你形成共鸣,有些在你看来或许是小儿科,不喜勿喷。objc view plain copyA valid provisioning profile for this executable was not found. 解决问题所在:发布证书无法运行在真机上!XCode8的项目

2、在xcode7运行报错:objc view plain copyThe document “ViewController.xib” requires Xcode 8.0 or later. This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8.0 or later. 有两种方法解决这个问题:1.你同事也升级Xcode8,比较推荐这种方式,应该迎接改变。2.右击XIB或SB文件 - Open as - Source Code,删除xml文件中下面一行

3、字段。场景:tabbar左右pan手势切换,其中一个VC是UIPageViewController,这样会导致到pageView的时候不能切换tabbar,如何禁掉pageVC切换呢?出于UIPageViewController和UItableView等产生手势冲突,我们往往要禁用其翻页手势,代码如下:self.pageViewController.dataSource = nil;网络上搜到的重写手势等方法,亲测无效,所以给出这个最简单粗暴的方法。objc view plain copy/ tabbar的切换动画(一般不用哦) - (void)viewWillDisappear:(BOOL)

4、animated super viewWillDisappear:animated; CATransition *transition = CATransition animation; transition setDuration:1; transition setType:fade; self.tabBarController.view.layer addAnimation:transition forKey:nil; objc view plain copy/ 解决带有轮播图的手势冲突 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)ge

5、stureRecognizer shouldReceiveTouch:(UITouch *)touch if (touch.view.frame.origin.y100) return NO; return YES; objc view plain copy/1,禁止.DS_store生成: 打开 “终端” ,复制黏贴下面的命令,回车执行,重启Mac即可生效。 defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE /2,恢复.DS_store生成: defaults delete com.app

6、le.desktopservices DSDontWriteNetworkStores FMDB根据条件查询数据库出现的错误:问题:注意选项A.我竟然匹配不到这种字符, rnt都不行方案:中文全角空格.你想说什么.我转了下.u3000 已解决!objc view plain copy/Objective-C拓展了C,自然很多用法是和C一致的。比如浮点数转化成整数,就有以下四种情况。 /1.简单粗暴,直接转化 float f = 1.5; int a; a = (int)f; NSLog(a = %d,a); /输出结果是1。(int)是强制类型转化,丢弃浮点数的小数部分。 /2.高斯函数,向下

7、取整 float f = 1.6; int a; a = floor(f); NSLog(a = %d,a); /输出结果是1。floor()方法是向下取整,类似于数学中的高斯函数 .取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1. /3.ceil函数,向上取整。 float f = 1.5; int a; a = ceil(f); NSLog(a = %d,a); /输出结果是2。ceil()方法是向上取整,取得不小于浮点数的最小整数,对于正数来说是舍弃浮点数部分并加1,对于复数来说就是舍弃浮点数部分. /4.通过强制类型转换四舍五入。 flo

8、at f = 1.5; int a; a = (int)(f+0.5); NSLog(a = %d,a); 关于block传值及数据同步总结:A B C三个界面间C界面修改内容达到AB界面刷新最新的数据保持ABC数据同步:1.C到B可以用block回调传值 2.B界面到A界面只需在B界面Back的时候发出拉取数据并刷新cell即可解决数据不同步现象。objc view plain copy/在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak、循环引用、不能执行之类的警告。 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告! /首先学会基本的语句 #pragma

9、clang diagnostic push #pragma clang diagnostic ignored -Wdeprecated-declarations /这里写出现警告的代码 #pragma clang diagnostic pop /这样就消除了方法弃用的警告! iOS8调用相机警告:错误代码:Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting

10、orsnapshot after screen updates.IOS8多了一个样式UIModalPresentationOverCurrentContext,IOS8中 presentViewController时请将控制器的modalPresentationStyle设置为 UIModalPresentationOverCurrentContext,问题解决!错误点: ENABLE_BITCODE错误设置(mrc下)解决方法:objc view plain copy/ 默认选中第一行 tableView selectRowAtIndexPath:NSIndexPath indexPathF

11、orRow:0 inSection:0 animated:NO scrollPosition:UITableViewScrollPositionNone; / 实现了选中第一行的方法 self tableView:_mainIndustryTableView didSelectRowAtIndexPath:NSIndexPath indexPathForItem:0 inSection:0; 例如: / 默认下选中状态 - (void)customAtIndex:(UITableView *)tableView / 默认选中第一行 tableView selectRowAtIndexPath:

12、NSIndexPath indexPathForRow:0 inSection:0 animated:NO scrollPosition:UITableViewScrollPositionNone; if (tableView isEqual:_mainIndustryTableView) self tableView:tableView didSelectRowAtIndexPath:NSIndexPath indexPathForItem:0 inSection:0; iOS headerview与tableview之间距离控制?objc view plain copy/view 作为 t

13、ableView 的 tableHeaderView,单纯的改变 view 的 frame 是无济于事的,tableView 不会大度到时刻适应它的高度(以后 Apple 会不会改变就不知道了), /所以,如何告诉tableView 它的 tableHeaderView 已经改变了?很简单,就一句话(关键最后一句): webView sizeToFit; CGRect newFrame = headerView.frame; newFrame.size.height = newFrame.size.height + webView.frame.size.height; headerView.f

14、rame = newFrame; self.tableView setTableHeaderView:headerView; /这样以后,效果就出来了。不过这种过度显得有些生硬,能不能加一点点动画,让它变得顺眼一些呢?试试下面的代码: self.tableView beginUpdates; self.tableView setTableHeaderView:headerView; self.tableView endUpdates; Cell 分割线不全:objc view plain copy-(void)viewDidLayoutSubviews if (_listTableView r

15、espondsToSelector:selector(setSeparatorInset:) _listTableView setSeparatorInset:UIEdgeInsetsZero; if (_listTableView respondsToSelector:selector(setLayoutMargins:) _listTableView setLayoutMargins:UIEdgeInsetsZero; -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forR

16、owAtIndexPath:(NSIndexPath *)indexPat if (cell respondsToSelector:selector(setLayoutMargins:) cell setLayoutMargins:UIEdgeInsetsZero; if (cell respondsToSelector:selector(setSeparatorInset:) cell setSeparatorInset:UIEdgeInsetsZero; / 自绘分割线 - (void)drawRect:(CGRect)rect CGContextRef context = UIGraph

17、icsGetCurrentContext(); CGContextSetFillColorWithColor(context, UIColor whiteColor.CGColor); CGContextFillRect(context, rect); CGContextSetStrokeColorWithColor(context, UIColor colorWithRed:0xE2/255.0f green:0xE2/255.0f blue:0xE2/255.0f alpha:1.CGColor); CGContextStrokeRect(context, CGRectMake(0, re

18、ct.size.height - 1, rect.size.width, 1); iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(020)和制表符(t)之外,全角空格 (u3000)也被计算在内,甚至连多余的换行符(r,n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化 了之后,往往不能满足一些本可以简单实现的需求。需求1.使用添加n方式将上下文本连续空两行,即实现文本的2倍行距。 iOS7.0之前解决办法:在每个换行符后面添加一个空格 即如果要显示为: aaaaaaa空行空行bbbbbb使用以下格式进行文本赋值l

19、bl.text = aaaaaaanu0020nu0020bbbbbb;iOS7.0之后需要增加,不增加则无效lbl.numberOfLines = 0; / 0表示行数不固定lbl.lineBreakMode=UILineBreakModeWordWrap; / 允许换行(可选)需求2.在所有的UILabel的text后增加一个空格,并使text右对齐。 iOS7.0之前解决办法:直接在text后增加空格即可,即text在赋值前增加空格。 lbl.text = NSString stringWithFormat:%,aaaaa,u0020;iOS7.0之后需要重写UILabel的drawTe

20、xtInRect方法,通过缩短默认文本绘制Rect的宽度半个字体宽度来实现。(当然也可以在底部铺一个view调整,暨简单又高效)具体实现代码如下:objc view plain copy#import MyLabel.h implementation MyLabel -(id) initWithFrame:(CGRect)frame self = super initWithFrame:frame; if(self) return self; -(void) drawTextInRect:(CGRect)rect /从将文本的绘制Rect宽度缩短半个字体宽度 /self.font.pointS

21、ize / 2 return super drawTextInRect:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width - self.font.pointSize / 2, rect.size.height); end /附录: /UILabel会自动清除的空白字符(UNICODE) u0009 CHARACTER TABULATION u000A LINE FEED u000D CARRIAGE RETURN u0020 SPACE u0085 NEXT LINE u00A0 NBSP u1680 OGHAM SPACE MA

22、RK u180E MONGOLIAN VOWEL SEPARATOR u2000 EN QUAD u200A HAIR SPACE u200B ZERO WIDTH SPACE u2028 LINE SEPARATOR u2029 PARAGRAPH SEPARATOR u202F NARROW NO-BREAK SPACE u205F MEDIUM MATHEMATICAL SPACE u3000 IDEOGRAPHIC SPACE 监听UITextField的text的变化:objc view plain copy/ 注册监听 NSNotificationCenter defaultCen

23、terpostNotificationName:UITextFieldTextDidChangeNotification object:nil; NSNotificationCenter defaultCenteraddObserver:self selector:selector(changeForKeyWord:) name:UITextFieldTextDidChangeNotification object:nil; / 监听关键词变化 - (void)changeForKeyWord:(NSNotification *)sender / 关键词改变时清除地区查询条件纪录 NSUser

24、Defaults standardUserDefaultssetObject:0 forKey:proRow; NSUserDefaults standardUserDefaultssetObject:0 forKey:section; /监听UITextField的点击事件 NSNotificationCenter defaultCenterpostNotificationName:UITextFieldTextDidBeginEditingNotification object:nil; NSNotificationCenter defaultCenteraddObserver:self

25、selector:selector(enterEdited:) name:UITextFieldTextDidBeginEditingNotification object:nil; - (void)enterEdited:(NSNotification *)sender /事件写这里!希望帮到你! 改变cell的选中颜色:objc view plain copycell.selectedBackgroundView = UIView alloc initWithFrame:cell.frame; cell.selectedBackgroundView.backgroundColor = CO

26、LOR_BACKGROUNDVIEW; /不需要任何颜色可以这么设置: cell.selectionStyle = UITableViewCellSelectionStyleNone; 旋转图片:objc view plain copy#pragma mark - 更新按钮动画 - (void)rotate360DegreeWithImageViews:(UIImageView *)myViews CABasicAnimation *rotationAnimation = CABasicAnimation animationWithKeyPath:transform.rotation.z; r

27、otationAnimation.toValue = NSNumber numberWithFloat: M_PI * 2.0 ; rotationAnimation.duration = 1.0; rotationAnimation.cumulative = YES;rotate360DegreeWithImageViews rotationAnimation.repeatCount = 100000; myViews.layer addAnimation:rotationAnimation forKey:rotationAnimation; myViews.layer removeAllA

28、nimations; / 停止 UIView的exclusiveTouch属性通过设置self setExclusiveTouch:YES;可以达到同一界面上多个控件接受事件时的排他性,从而避免一些问题。objc view plain copy/1. 设置的时候在ib里面记得选择无边框的,要不然随便你设置,都是无效的,也是坑死了。 _textBoxName.layer.borderWidth=1.0f; _textBoxName.layer.borderColor=UIColorcolorWithRed:0xbf/255.0fgreen:0xbf/255.0fblue:0xbf/255.0fa

29、lpha:1.CGColor; /2.在uitextfield 中文字最左边距离左侧边框的距离 _textBoxName.leftView=UIViewalloc initWithFrame:CGRectMake(0,0, 16,51); _textBoxName.leftViewMode=UITextFieldViewModeAlways; 当你使用 UISearchController 在 UITableView 中实现搜索条,在搜索框已经激活并推入新的 VC 的时候会发生搜索框重叠的情况解决办法:那就是 definesPresentationContext 这个布尔值。画个曲线如何做呢?如图:objc view plain copyUIView *myCustomView = UIView allocinitWithFrame:CGRectMake(0, 204,kScreenWidth, 120); myCustomView.backgroundColor = UIColor whiteColor; view addSubview:myCustomView; UIBezierPath *bezierPath = UIBezierPath bezierPath; bezierPath moveToPoint:CGPointMake(0,0); bezierPath

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1