由身份证号码返回性别
-(NSString *)sexStrFromIdentityCard:(NSString *)numberStr{ NSString *result = nil; BOOL isAllNumber = YES; if([numberStr length]<17) return result; //**截取第17为性别识别符 NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(16, 1)]; //**检测是否是数字; const char *str = [fontNumer UTF8String]; const char *p = str; while (*p!='\0') { if(!(*p>='0'&&*p<='9')) isAllNumber = NO; p++; } if(!isAllNumber) return result; int sexNumber = [fontNumer integerValue]; if(sexNumber%2==1) result = @"男"; ///result = @"M"; else if (sexNumber%2==0) result = @"女"; //result = @"F"; return result;}
2. ✓Mac 系统显示和隐藏文件的终端命令:
如果你实在想尝试命令操作,可参考:
显示:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false
输完单击Enter键,退出终端,重新启动Finder就可以了(重启Finder:鼠标单击窗口左上角的苹果标志–>强制退出–>Finder–>重新启动)
3.**打印View所有子视图**
po [[self view]recursiveDescription]
4. 去掉分割线多余15像素
首先在viewDidLoad方法加入以下代码:
if([self.tableViewrespondsToSelector:@selector(setSeparatorInset:)]) { [self.tableViewsetSeparatorInset:UIEdgeInsetsZero]; }if([self.tableViewrespondsToSelector:@selector(setLayoutMargins:)]) { [self.tableViewsetLayoutMargins:UIEdgeInsetsZero];
}
然后在重写willDisplayCell方法
- (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath{if([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; }if([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; }}
5 . 检测是否IPad Pro和其它设备型号
- (BOOL)isIpadPro{
UIScreen *Screen = [UIScreen mainScreen];
CGFloat width = Screen.nativeBounds.size.width/Screen.nativeScale;
CGFloat height = Screen.nativeBounds.size.height/Screen.nativeScale;
BOOL isIpad =[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad;
BOOL hasIPadProWidth =fabs(width -1024.f) < DBL_EPSILON;
BOOL hasIPadProHeight =fabs(height -1366.f) < DBL_EPSILON;
returnisIpad && hasIPadProHeight && hasIPadProWidth;}#defineUI_IS_LANDSCAPE ([UIDevice currentDevice].orientation == UIDeviceOrientationLands
6.视图的生命周期
1、 alloc 创建对象,分配空间
2、 init (initWithNibName) 初始化对象,初始化数据
3、 loadView 从nib载入视图 ,除非你没有使用xib文件创建视图
4、 viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、 viewWillAppear视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、 viewDidAppear 视图已在屏幕上渲染完成
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放.viewVillUnload- 当内存过低,即将释放时调用;viewDidUnload-当内存过低,释放一些不需要的视图时调用。
7.MRC和ARC混编设置方式
在XCode中targets的build phases选项下CompileSources下选择 不需要arc编译的文件双击输入 -fno-objc-arc 即可MRC工程中也可以使用ARC的类,方法如下:在XCode中targets的build phases选项下CompileSources下选择要使用arc编译的文件双击输入 -fobjc-arc 即可
8. 把tableview里cell的小对勾的颜色改成别的颜色
tableView.tintColor= [UIColorredColor];
9. 调整tableview的Cell的separaLine线的位置
tableView.separatorInset = UIEdgeInsetsMake(0,100,0,0);
cell.separatorInset = UIEdgeInsetsMake(0,0,0,0)
cell.layoutMargins = UIEdgeInsetsMake(0,0,0,0)
10.设置滑动的时候隐藏navigationbar
navigationController.hidesBarsOnSwipe = Yes
11. 屏幕截图
// 1. 开启一个与图片相关的图形上下文UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,NO,0.0);
// 2. 获取当前图形上下文CGContextRefctx =UIGraphicsGetCurrentContext();
// 3. 获取需要截取的view的layer[self.view.layerrenderInContext:ctx];
// 4. 从当前上下文中获取图片UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
// 5. 关闭图形上下文UIGraphicsEndImageContext();
// 6. 把图片保存到相册UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
12. HTTP 基本状态码
200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。
300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。
400 Bad Request 由于包含语法错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。
408 Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
500 Internal Server Error 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
13. 设置按钮按下时候会发光
button.showsTouchWhenHighlighted=YES;
14. 去掉导航栏返回按钮后的文字
[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
15. 跳转到手机的设置界面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
16. 关闭navigationController的滑动返回手势
self.navigationController.interactivePopGestureRecognizer.enabled=NO;
17.让Xcode的控制台支持LLDB类型的打印
打开终端输入三条命令:
touch ~/.lldbinit
echo display @import UIKit >> ~/.lldbinit
echo target stop-hook add -o \"target stop-hook disable\" >> ~/.lldbinit
18. 屏幕截图
// 1. 开启一个与图片相关的图形上下文UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,NO,0.0);
// 2. 获取当前图形上下文 CGContextRefctx =UIGraphicsGetCurrentContext();
// 3. 获取需要截取的view的layer [self.view.layerrenderInContext:ctx];
// 4. 从当前上下文中获取图片 UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
// 5. 关闭图形上下文 UIGraphicsEndImageContext();
// 6. 把图片保存到相册 UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
19 . 验证身份证号码
- (BOOL)checkIdentityCardNo:(NSString*)cardNo{
if(cardNo.length!=18) {
returnNO;
}
NSArray* codeArray=[NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",nil];NSDictionary* checkCodeDic = [NSDictionarydictionaryWithObjects:[NSArrayarrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2",nil] forKeys:[NSArrayarrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil]];NSScanner* scan = [NSScannerscannerWithString:[cardNo substringToIndex:17]];intval;BOOLisNum = [scan scanInt:&val] && [scan isAtEnd];if(!isNum) {returnNO; }intsumValue =0;for(inti =0; i<17; i++) { sumValue+=[[cardNo substringWithRange:NSMakeRange(i ,1) ] intValue]* [[codeArray objectAtIndex:i] intValue]; }NSString* strlast = [checkCodeDic objectForKey:[NSStringstringWithFormat:@"%d",sumValue%11]];if([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17,1)]uppercaseString]]) {returnYES; }returnNO;
}
20. UITableView隐藏空白部分线条
self.tableView.tableFooterView= [[UIViewalloc]init];
21. SEL 和 IMP
SEL: 其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去寻找对应的方法地址,找到方法地址后就可以调用方法。这些都是运行时特性,发消息就是发送SEL,然后根据SEL找到地址,调用方法。IMP: 是”implementation”的缩写,它是objetive-C方法 (method)实现代码块的地址,类似函数指针,通过它可以 直接访问任意一个方法。免去发送消息的代价。
22. iOS去除导航栏和tabbar的1px横线
其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先设置它的背景也为空,全部代码如下:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]];//其实这个线也是image控制的。设为空即可