ios实用开发技巧:http://mobile.51cto.com/iphone-479249.htm
1.控制器之间的灵活跳转:如果有A,B,C,D四个控制器,想要在A push B ,B 在 push 到 D,然后从D pop 到 C,在从C pop 到 A 的解决方案:
思想:先Apush到B,再B push 到D,此时navigationcontroller的viewControllers中有[A,B,D],若想从D pop 到C,首先得这个数组里面有C这个控制器,可以考虑改变这个数组,但该数组系统默认的是不可变数组,我们可以创建一个可变数组tempArr,然后重点来了,就是利用一个方法 [self.navigationController setViewControllers:tempArr animated:YES]; 重新设置导航控制器的控制器数组.至于可变数组的操作,这里就省略了.
2.解决不合法的网络请求地址,当URL中包含了ASCII 字符集,汉字时,使用时必须要进行转义:
NSString * urlString = [kWebsite stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
3.SVN 忽略文件:
svn默认是忽略.a文件的,那如何在mac上传.a文件呢?
这个方法是通过修改svn配置文件,在终端输入:
open ~/.subversion/config
在配置文件中查找[auto-props],在[auto-props]上面添加:
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store
4.如何修改MJRefresh的下拉刷新控件的位置.
[header setIgnoredScrollViewContentInsetTop:-50];
5.加载webView时内存消耗过多
http://blog.csdn.net/kongu/article/details/46878623
6.带进度条的webview控件 :支持cocoaPods
demo下载地址:https://github.com/chausson/CHWebView
文档说明:https://github.com/chausson/CHWebView/tree/master/ChineseMd
7.cocoaPods常见问题解决:http://blog.csdn.net/wangyanchang21/article/details/51437934
8.tabBarController的第三方, 方便增加加号按钮:CYLTabBarController
9.正式版状态下对NSLOG信息的屏蔽功能
a.在PCH文件中增加如下代码
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif
b.在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。
c. 设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme
设置Build Configuration成Debug时,就可以打印nslog了。
设置Release,发布app版本的时候就不会打印了,提高了性能
10.AFN3.0 进行图片上传 http://blog.csdn.net/a645258072/article/details/51728806
11.https:获取cer证书
终端输入如下命令:
openssl s_client -connect www.baidu.com:443 /dev/null | openssl x509 -outform DER > https.cer
openssl s_client -connect kyfw.12306.cn:443 /dev/null | openssl x509 -outform DER > https.cer
12.自定义返回按钮会造成返回手势不能使用,解决方法
///处理自定义返回按钮后不能侧滑
@interface RootNavigationController : UINavigationController
@end
@implementation RootNavigationController
- (void)viewDidLoad {
[super viewDidLoad];
self.interactivePopGestureRecognizer.delegate = self;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if (self.childViewControllers.count == 1) { return NO; } return YES;
}
13.在xib中,在button的菜单栏中取消 Hilighted Adjusts Image选项,能够 取消按钮被长按变灰的效果
14.自定义view,如果重写了 initWithFrame,而在这个方法里面调用的是传入的frame,那么外面初始化的时候必须给定frame,否则可能出现意料不到的状况.
15.重写导航控制器的 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 可以拦截push操作,然后就可以在push的时候做一些我们自己想做的事情
16.如何自定义导航控制器,实现可以定制每个页面的导航栏, 包括设置导航条的透明度、颜色、以及渐变色。并且支持全屏右滑返回手势
http://www.jianshu.com/p/88bc827f0692
17.iOS scrollView 如何约束实现 固定宽度 动态高度? http://www.cocoachina.com/ios/20150923/13451.html
18.如何获取tableView中内容的高度,可以给tableView添加一个tableFooterView,然后获取tableFooterView 的y值即可
19. webview加载html的标签内容 http://www.cnblogs.com/jiww/p/5643041.html
20.在html文件中图片的位置,记住千万不要设置成绝对路径。直接src="xxxx.png"就OK了,图片格式无所谓。在html中,引用图片要写成src="image01.png"这样,类似src="1%E6%A0%B8%E6%AD%A6%E5%99%A8_files/image001.png"这样是不行的,而且你要把html文件放在项目里。但是直接给网络地址是可以的.
21.iOS报错[__NSCFNumber length]: unrecognized selector sent to instance出现这种报错很大的原因是因为类型给错了,或许你这个数据是从json上解析后得到的,但是需要看一下这个数据是NSString还是NSNumber类型,如果是NSNumber类型的话,你又直接使用NSString类型的变量去接收他,那么肯定会报这样的错误,所以一定要注意数据的类型
22.当需要使用popToRootViewController跳转到首页时,有时会发现跳到的tabBarController的selectedViewController并不是第一个控制器,而是其他的,这个时候可以在方法前先设置self.tabBarController.selectedIndex = 0;这样就可以跳转到首页了,但是会发现tabBar被隐藏了,此时有个很巧妙的办法就是追溯到上一步,就是从 主控制器(带tabBar页面的控制器),push的时候,push之前先设置shopCarVC.hidesBottomBarWhenPushed = YES;push的代码之后在设置shopCarVC.hidesBottomBarWhenPushed = NO;这样就可以解决tabBar消失的问题了.
23.错误:Assertion failure in -[MASViewConstraint install] -----控件没有添加到视图就是用masonry了
24 :底部视图直接用frame设置的情况下,在手机开启热点后,底部视图会往下偏一点,解决办法是将底部视图改为约束设置
25. error: linker command failed with exit code 1
原因:新建的控制器的名字和原有的控制器重名
还有以下两种情况可能会导致这种错误的发生:
一:项目中重复导入了某些文件.,这个一般在导入三方库时可能会重复导入.
解决办法:只需要在文件目录中查找到重复导入的文件,删掉即可,或者将整个三方库删除掉,重新导入,或者用cocopods导入.
二:在项目的某些地方需要#import"XXXX.h"而#import"XXXX.m".
26.CUICatalog: Invalid asset name supplied: (null)
UIImage imageNamed..后面的图片资源已经被删除了
网友评论