总结了几个月的东西终于能和各人分享了,不多说,直接看东西!
1、克制手机就寝
[UIApplicationsharedApplication].idleTimerDisabled=YES;
2、隐蔽某行cell
-(CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath:(NSIndexPath*)indexPath
{
//假如是你必要隐蔽的那一行,返回高度为0
if(indexPath.row==YouWantToHideRow)
return0;
return44;
}
//然后再你必要隐蔽cell的时间调用
[self.tableViewbeginUpdates];
[self.tableViewendUpdates];
3、禁用button高亮
button.adjustsImageWhenHighlighted=NO;
大概在创建的时间
UIButton*button=[UIButtonbuttonWithType:UIButtonTypeCustom];
4、tableview碰到这种报错failedtoobtainacellfromitsdataSource
是由于你的cell被调用的早了。先循环利用了cell,后又创建cell。次序错了
大概缘故起因:1、xib的cell没有注册2、内存中已经有这个cell的缓存了(也就是说通过你的cellId找到的cell并不是你想要的范例),这时间必要改下cell的标识
5、cocoapods报这个错误:unabletoaccess'https://github.com/facebook/pop.git/':Operationtimedoutafter0millisecondswith0outof0bytesreceived
办理办法:缘故起因大概是网络题目,网络哀求超时了,只必要重试就行了
6、cocoapods出现ERROR:Whileexecutinggem...(Errno::EPERM)
办理办法:
https://segmentfault.com/q/1010000002926243
7、动画切换window的根控制器
//options是动画选项
[UIViewtransitionWithView:[UIApplicationsharedApplication].keyWindowduration:0.5foptions:UIViewAnimationOptionTransitionCrossDissolveanimations:^{
BOOLoldState=[UIViewareAnimationsEnabled];
[UIViewsetAnimationsEnabled:NO];
[UIApplicationsharedApplication].keyWindow.rootViewController=[RootViewControllernew];
[UIViewsetAnimationsEnabled:oldState];
}completion:^(BOOLfinished){
}];
8、去除数组中重复的对象
NSArray*newArr=[oldArrvalueForKeyPath:@“@distinctUnionOfObjects.self"];
9、编译的时间碰到nosuchfileordirectory:/users/apple/XXX
是由于编译的时间,在此路径下找不到这个文件,办理这个题目,起首是是要查抄缺少的文件是不是在工程中,假如不在工程中,必要从本地拖进去,假如发现已经存在工程中了,大概拖进去还是报错,这时间必要去buildphases中搜刮这个文件,这时间很大概会搜出现两个雷同的文件,这时间,有一个路径是精确的,删除别的一个即可。假如删除了还是不可,必要把两个都删掉,然后重新往工程里拖进这个文件即可
buildphases
10、iOS8体系中,tableView最好实现下-tableView:heightForRowAtIndexPath:这个署理方法,要否则在iOS8中大概就会出现表现不全大概无法相应变乱的题目
11、iOS8中实现侧滑功能的时间这个方法必须实现,要否则在iOS8中无法侧滑
//必须写的方法,和editActionsForRowAtIndexPath配对利用,内里什么不写也行
-(void)tableView:(UITableView*)tableViewcommitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath*)indexPath{
}
12、三个关照
NSSystemTimeZoneDidChangeNotification监听修改时间界面的两个按钮状态变革
UIApplicationSignificantTimeChangeNotification监听用户改变时间(只要点击主动设置按钮就会调用)NSSystemClockDidChangeNotification监听用户修改时间(时间差别才会调用)
13、SDWebImage本地缓存偶然间会害人。假如之前缓存过一张图片,纵然下次服务器换了这张图片,但是图片url没换,用sdwebimage下载下来的还是从前那张,以是碰到这种题目,不要先去怼服务器,清空下缓存再试就好了。
14、上线前留意:
1)、删掉代码中全部的测试代码
2)、假如背景有考核模式,提示背景开启此模式
3)、主流程再跑一跑
4)、全局搜刮waring,查抄全部标记waring的地方
15、跳进app权限设置
//跳进app设置
if(UIApplicationOpenSettingsURLString!=NULL){
NSURL*url=[NSURLURLWithString:UIApplicationOpenSettingsURLString];
[[UIApplicationsharedApplication]openURL:url];
}
}
16、给一个view截图
UIGraphicsBeginImageContextWithOptions(view.bounds.size,YES,0.0);
[view.layerrenderInContext:UIGraphicsGetCurrentContext()];
UIImage*img=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
17、开辟中假如要动态修改tableView的tableHeaderView大概tableFooterView的高度,必要给tableView重新设置,而不是直接更改高度。精确的做法是重新设置一下tableView.tableFooterView=更改过高度的view。为什么?着实在iOS8以上直接改高度是没有题目的,在iOS8中出现了contentSize禁绝确的题目,这是办理办法。
18、留意对象为nil的时间,调用此对象分类的方法不会实行
19、collectionView的内容小于其宽高的时间是不能滚动的,设置可以滚动:
collectionView.alwaysBounceHorizontal=YES;
collectionView.alwaysBounceVertical=YES;
20、设置navigationBar上的title颜色和巨细
[self.navigationController.navigationBarsetTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColoryouColor],NSFontAttributeName:[UIFontsystemFontOfSize:15]}]
21、颜色转图片
+(UIImage*)cl_imageWithColor:(UIColor*)color{
CGRectrect=CGRectMake(0.0f,0.0f,1.0f,1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRefcontext=UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,[colorCGColor]);
CGContextFillRect(context,rect);
UIImage*image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
22、view设置圆角
#defineViewBorderRadius(View,Radius,Width,Color)
[View.layersetCornerRadius:(Radius)];
[View.layersetMasksToBounds:YES];
[View.layersetBorderWidth:(Width)];
[View.layersetBorderColor:[ColorCGColor]]//view圆角
23、强/弱引用
#defineWeakSelf(type)__weaktypeof(type)weak##type=type;//weak
#defineStrongSelf(type)__strongtypeof(type)type=weak##type;//strong
24、由角度转换弧度
#defineDegreesToRadian(x)(M_PI*(x)/180.0)
25、由弧度转换角度
#defineRadianToDegrees(radian)(radian*180.0)/(M_PI)
26、获取图片资源
#defineGetImage(imageName)[UIImageimageNamed:[NSStringstringWithFormat:@"%@",imageName]]
27、获取temp
#definePathTempNSTemporaryDirectory()
28、获取沙盒Document
#definePathDocument[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject]
29、获取沙盒Cache
#definePathCache[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject]
30、GCD代码只实行一次
#definekDISPATCH_ONCE_BLOCK(onceBlock)staticdispatch_once_tonceToken;dispatch_once(onceToken,onceBlock);
31、自界说NSLog
#ifdefDEBUG
#defineNSLog(fmt,...)NSLog((@"%s[Line%d]"fmt),__PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__)
#else
#defineNSLog(...)
#endif
32、Font
#defineFontL(s)[UIFontsystemFontOfSize:sweight:UIFontWeightLight]
#defineFontR(s)[UIFontsystemFontOfSize:sweight:UIFontWeightRegular]
#defineFontB(s)[UIFontsystemFontOfSize:sweight:UIFontWeightBold]
#defineFontT(s)[UIFontsystemFontOfSize:sweight:UIFontWeightThin]
#defineFont(s)FontL(s)
33、FORMAT
#defineFORMAT(f,...)[NSStringstringWithFormat:f,##__VA_ARGS__]
34、在主线程上运行
#definekDISPATCH_MAIN_THREAD(mainQueueBlock)dispatch_async(dispatch_get_main_queue(),mainQueueBlock);
35、开启异步线程
#definekDISPATCH_GLOBAL_QUEUE_DEFAULT(globalQueueBlock)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),globalQueueBlocl);
36、关照
#defineNOTIF_ADD(n,f)[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(f)name:nobject:nil]
#defineNOTIF_POST(n,o)[[NSNotificationCenterdefaultCenter]postNotificationName:nobject:o]
#defineNOTIF_REMV()[[NSNotificationCenterdefaultCenter]removeObserver:self]
37、随机颜色
+(UIColor*)RandomColor{
NSIntegeraRedValue=arc4random()%255;
NSIntegeraGreenValue=arc4random()%255;
NSIntegeraBlueValue=arc4random()%255;
UIColor*randColor=[UIColorcolorWithRed:aRedValue/255.0fgreen:aGreenValue/255.0fblue:aBlueValue/255.0falpha:1.0f];
returnrandColor;
}
38、获取window
+(UIWindow*)getWindow{
UIWindow*win=nil;//[UIApplicationsharedApplication].keyWindow;
for(iditemin[UIApplicationsharedApplication].windows){
if([itemclass]==[UIWindowclass]){
if(!((UIWindow*)item).hidden){
win=item;
break;
}
}
}
returnwin;
}
39、修改textField的placeholder的字体颜色、巨细
[textFieldsetValue:[UIColorredColor]forKeyPath:@"_placeholderLabel.textColor"];
[textFieldsetValue:[UIFontboldSystemFontOfSize:16]forKeyPath:@"_placeholderLabel.font"];
40、同一收起键盘
[[[UIApplicationsharedApplication]keyWindow]endEditing:YES];
41、控制屏幕旋转,在控制器中写
/**是否支持主动转屏*/
-(BOOL)shouldAutorotate{
returnYES;
}
/**支持哪些屏幕方向*/
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
returnUIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight;
}
/**默认的屏幕方向(当前ViewController必须是通过模态出来的UIViewController(模态带导航的无效)方式显现出来的,才会调用这个方法)*/
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
returnUIInterfaceOrientationLandscapeLeft|UIInterfaceOrientationLandscapeRight;
}
42、获取app缓存巨细
-(CGFloat)getCachSize{
NSUIntegerimageCacheSize=[[SDImageCachesharedImageCache]getSize];
//获取自界说缓存巨细
//用罗列器遍历一个文件夹的内容
//1.获取文件夹罗列器
NSString*myCachePath=[NSHomeDirectory()stringByAppendingPathComponent:@"Library/Caches"];
NSDirectoryEnumerator*enumerator=[[NSFileManagerdefaultManager]enumeratorAtPath:myCachePath];
__blockNSUIntegercount=0;
//2.遍历
for(NSString*fileNameinenumerator){
NSString*path=[myCachePathstringByAppendingPathComponent:fileName];
NSDictionary*fileDict=[[NSFileManagerdefaultManager]attributesOfItemAtPath:patherror:nil];
count+=fileDict.fileSize;//自界说全部缓存巨细
}
//得到是字节转化为M
CGFloattotalSize=((CGFloat)imageCacheSize+count)/1024/1024;
returntotalSize;
}
43、整理app缓存
-(void)handleClearView{
//删除两部分
//1.删除sd图片缓存
//先打扫内存中的图片缓存
[[SDImageCachesharedImageCache]clearMemory];
//打扫磁盘的缓存
[[SDImageCachesharedImageCache]clearDisk];
//2.删除本身缓存
NSString*myCachePath=[NSHomeDirectory()stringByAppendingPathComponent:@"Library/Caches"];
[[NSFileManagerdefaultManager]removeItemAtPath:myCachePatherror:nil];
}
44、模子转字典
staticNSSet*classes;
-(NSMutableDictionary*)getParameterDictionary{
NSMutableDictionary*dict=[NSMutableDictionarydictionary];
Classc=self.class;
while(c){
unsignedcount;
objc_property_t*properties=class_copyPropertyList([cclass],count);
for(inti=0;icount;i++){
NSString*key=[NSStringstringWithUTF8String:property_getName(properties[i])];
dict[key]=[selfvalueForKey:key];
}
free(properties);
//得到父类
c=class_getSuperclass(c);
if([selfisClassFromFoundation:c])break;
}
returndict;
}
-(BOOL)isClassFromFoundation:(Class)c
{
if(c==[NSObjectclass]||c==[NSManagedObjectclass])returnYES;
__blockBOOLresult=NO;
[[selffoundationClasses]enumerateObjectsUsingBlock:^(ClassfoundationClass,BOOL*stop){
if([cisSubclassOfClass:foundationClass]){
result=YES;
*stop=YES;
}
}];
returnresult;
}
-(NSSet*)foundationClasses
{
if(classes==nil){
//聚集中没有NSObject,由于险些全部的类都是继承自NSObject,具体是不是NSObject必要特别判定
classes=[NSSetsetWithObjects:
[NSURLclass],
[NSDateclass],
[NSValueclass],
[NSDataclass],
[NSErrorclass],
[NSArrayclass],
[NSDictionaryclass],
[NSStringclass],
[NSAttributedStringclass],nil];
}
returnclasses;
}
45、互换两个方法实现
ClassaClass=[selfclass];
SELoriginalSelector=@selector(viewWillAppear:);
SELswizzledSelector=@selector(xxx_viewWillAppear:);
MethodoriginalMethod=class_getInstanceMethod(aClass,originalSelector);
MethodswizzledMethod=class_getInstanceMethod(aClass,swizzledSelector);
BOOLdidAddMethod=
class_addMethod(aClass,
originalSelector,
method_getImplementation(swizzledMethod),
method_getTypeEncoding(swizzledMethod));
if(didAddMethod){
class_replaceMethod(aClass,
swizzledSelector,
method_getImplementation(originalMethod),
method_getTypeEncoding(originalMethod));
}else{
method_exchangeImplementations(originalMethod,swizzledMethod);
}
46、打印百分号和引号
NSLog(@"%%");
NSLog(@""");
47、几个常用权限判定
if([CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusDenied){
NSLog(@"没有定位权限");
}
AVAuthorizationStatusstatusVideo=[AVCaptureDeviceauthorizationStatusForMediaType:AVMediaTypeVideo];
if(statusVideo==AVAuthorizationStatusDenied){
NSLog(@"没有摄像头权限");
}
//是否有麦克风权限
AVAuthorizationStatusstatusAudio=[AVCaptureDeviceauthorizationStatusForMediaType:AVMediaTypeAudio];
if(statusAudio==AVAuthorizationStatusDenied){
NSLog(@"没有灌音权限");
}
[PHPhotoLibraryrequestAuthorization:^(PHAuthorizationStatusstatus){
if(status==PHAuthorizationStatusDenied){
NSLog(@"没有相册权限");
}
}];
48、获取手机型号
+(NSString*)getDeviceInfo{
structutsnamesystemInfo;
uname(systemInfo);
NSString*platform=[NSStringstringWithCString:systemInfo.machineencoding:NSASCIIStringEncoding];
if([platformisEqualToString:@"iPhone1,1"])return@"iPhone2G";
if([platformisEqualToString:@"iPhone1,2"])return@"iPhone3G";
if([platformisEqualToString:@"iPhone2,1"])return@"iPhone3GS";
if([platformisEqualToString:@"iPhone3,1"])return@"iPhone4";
if([platformisEqualToString:@"iPhone3,2"])return@"iPhone4";
if([platformisEqualToString:@"iPhone3,3"])return@"iPhone4";
if([platformisEqualToString:@"iPhone4,1"])return@"iPhone4S";
if([platformisEqualToString:@"iPhone5,1"])return@"iPhone5";
if([platformisEqualToString:@"iPhone5,2"])return@"iPhone5";
if([platformisEqualToString:@"iPhone5,3"])return@"iPhone5c";
if([platformisEqualToString:@"iPhone5,4"])return@"iPhone5c";
if([platformisEqualToString:@"iPhone6,1"])return@"iPhone5s";
if([platformisEqualToString:@"iPhone6,2"])return@"iPhone5s";
if([platformisEqualToString:@"iPhone7,1"])return@"iPhone6Plus";
if([platformisEqualToString:@"iPhone7,2"])return@"iPhone6";
if([platformisEqualToString:@"iPhone8,1"])return@"iPhone6s";
if([platformisEqualToString:@"iPhone8,2"])return@"iPhone6sPlus";
//日行两款手机型号均为日本独占,大概利用索尼FeliCa付出方案而不是苹果付出
if([platformisEqualToString:@"iPhone9,1"])return@"国行、日版、港行iPhone7";
if([platformisEqualToString:@"iPhone9,2"])return@"港行、国行iPhone7Plus";
if([platformisEqualToString:@"iPhone9,3"])return@"美版、台版iPhone7";
if([platformisEqualToString:@"iPhone9,4"])return@"美版、台版iPhone7Plus";
if([platformisEqualToString:@"iPhone8,4"])return@"iPhoneSE";
if([platformisEqualToString:@"iPod1,1"])return@"iPodTouch1G";
if([platformisEqualToString:@"iPod2,1"])return@"iPodTouch2G";
if([platformisEqualToString:@"iPod3,1"])return@"iPodTouch3G";
if([platformisEqualToString:@"iPod4,1"])return@"iPodTouch4G";
if([platformisEqualToString:@"iPod5,1"])return@"iPodTouch5G";
if([platformisEqualToString:@"iPad1,1"])return@"iPad1G";
if([platformisEqualToString:@"iPad2,1"])return@"iPad2";
if([platformisEqualToString:@"iPad2,2"])return@"iPad2";
if([platformisEqualToString:@"iPad2,3"])return@"iPad2";
if([platformisEqualToString:@"iPad2,4"])return@"iPad2";
if([platformisEqualToString:@"iPad2,5"])return@"iPadMini1G";
if([platformisEqualToString:@"iPad2,6"])return@"iPadMini1G";
if([platformisEqualToString:@"iPad2,7"])return@"iPadMini1G";
if([platformisEqualToString:@"iPad3,1"])return@"iPad3";
if([platformisEqualToString:@"iPad3,2"])return@"iPad3";
if([platformisEqualToString:@"iPad3,3"])return@"iPad3";
if([platformisEqualToString:@"iPad3,4"])return@"iPad4";
if([platformisEqualToString:@"iPad3,5"])return@"iPad4";
if([platformisEqualToString:@"iPad3,6"])return@"iPad4";
if([platformisEqualToString:@"iPad4,1"])return@"iPadAir";
if([platformisEqualToString:@"iPad4,2"])return@"iPadAir";
if([platformisEqualToString:@"iPad4,3"])return@"iPadAir";
if([platformisEqualToString:@"iPad4,4"])return@"iPadMini2G";
if([platformisEqualToString:@"iPad4,5"])return@"iPadMini2G";
if([platformisEqualToString:@"iPad4,6"])return@"iPadMini2G";
if([platformisEqualToString:@"i386"])return@"iPhoneSimulator";
if([platformisEqualToString:@"x86_64"])return@"iPhoneSimulator";
returnplatform;
}
49、长按复制功能
-(void)viewDidLoad
{
[self.viewaddGestureRecognizer:[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(pasteBoard:)]];
}
-(void)pasteBoard:(UILongPressGestureRecognizer*)longPress{
if(longPress.state==UIGestureRecognizerStateBegan){
UIPasteboard*pasteboard=[UIPasteboardgeneralPasteboard];
pasteboard.string=@"必要复制的文本";
}
}
50、cocoapods升级
在终端实行sudogeminstall-n/usr/local/bincocoapods--pre
51、设置启动页后,依然表现之前的
删除app,手机重启,重新安装
52、判定图片范例
//通过图片Data数据第一个字节来获取图片扩展名
-(NSString*)contentTypeForImageData:(NSData*)data
{
uint8_tc;
[datagetBytes:clength:1];
switch(c)
{
case0xFF:
return@"jpeg";
case0x89:
return@"png";
case0x47:
return@"gif";
case0x49:
case0x4D:
return@"tiff";
case0x52:
if([datalength]12){
returnnil;
}
NSString*testString=[[NSStringalloc]initWithData:[datasubdataWithRange:NSMakeRange(0,12)]encoding:NSASCIIStringEncoding];
if([testStringhasPrefix:@"RIFF"]
[testStringhasSuffix:@"WEBP"])
{
return@"webp";
}
returnnil;
}
returnnil;
}
53、获取手机和app信息
NSDictionary*infoDictionary=[[NSBundlemainBundle]infoDictionary];
CFShow(infoDictionary);
//app名称
NSString*app_Name=[infoDictionaryobjectForKey:@"CFBundleDisplayName"];
//app版本
NSString*app_Version=[infoDictionaryobjectForKey:@"CFBundleShortVersionString"];
//appbuild版本
NSString*app_build=[infoDictionaryobjectForKey:@"CFBundleVersion"];
//手机序列号
NSString*identifierNumber=[[UIDevicecurrentDevice]uniqueIdentifier];
NSLog(@"手机序列号:%@",identifierNumber);
//手机别名:用户界说的名称
NSString*userPhoneName=[[UIDevicecurrentDevice]name];
NSLog(@"手机别名:%@",userPhoneName);
//装备名称
NSString*deviceName=[[UIDevicecurrentDevice]systemName];
NSLog(@"装备名称:%@",deviceName);
//手机体系版本
NSString*phoneVersion=[[UIDevicecurrentDevice]systemVersion];
NSLog(@"手机体系版本:%@",phoneVersion);
//手机型号
NSString*phoneModel=[[UIDevicecurrentDevice]model];
NSLog(@"手机型号:%@",phoneModel);
//地方型号(国际化地区名称)
NSString*localPhoneModel=[[UIDevicecurrentDevice]localizedModel];
NSLog(@"国际化地区名称:%@",localPhoneModel);
NSDictionary*infoDictionary=[[NSBundlemainBundle]infoDictionary];
//当前应用名称
NSString*appCurName=[infoDictionaryobjectForKey:@"CFBundleDisplayName"];
NSLog(@"当前应用名称:%@",appCurName);
//当前应用软件版本比如:1.0.1
NSString*appCurVersion=[infoDictionaryobjectForKey:@"CFBundleShortVersionString"];
NSLog(@"当前应用软件版本:%@",appCurVersion);
//当前应用版本号码int范例
NSString*appCurVersionNum=[infoDictionaryobjectForKey:@"CFBundleVersion"];
NSLog(@"当前应用版本号码:%@",appCurVersionNum);
54、获取一个类的全部属性
idLenderClass=objc_getClass("Lender");
unsignedintoutCount,i;
objc_property_t*properties=class_copyPropertyList(LenderClass,outCount);
for(i=0;ioutCount;i++){
objc_property_tproperty=properties[i];
fprintf(stdout,"%s%sn",property_getName(property),property_getAttributes(property));
}
55、image圆角
-(UIImage*)circleImage
{
//NO代表透明
UIGraphicsBeginImageContextWithOptions(self.size,NO,1);
//得到上下文
CGContextRefctx=UIGraphicsGetCurrentContext();
//添加一个圆
CGRectrect=CGRectMake(0,0,self.size.width,self.size.height);
//方形变圆形
CGContextAddEllipseInRect(ctx,rect);
//裁剪
CGContextClip(ctx);
//将图片画上去
[selfdrawInRect:rect];
UIImage*image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
56、image拉伸
+(UIImage*)resizableImage:(NSString*)imageName
{
UIImage*image=[UIImageimageNamed:imageName];
CGFloatimageW=image.size.width;
CGFloatimageH=image.size.height;
return[imageresizableImageWithCapInsets:UIEdgeInsetsMake(imageH*0.5,imageW*0.5,imageH*0.5,imageW*0.5)resizingMode:UIImageResizingModeStretch];
}
57、JSON字符串转字典
+(NSDictionary*)parseJSONStringToNSDictionary:(NSString*)JSONString{
NSData*JSONData=[JSONStringdataUsingEncoding:NSUTF8StringEncoding];
NSDictionary*responseJSON=[NSJSONSerializationJSONObjectWithData:JSONDataoptions:NSJSONReadingMutableLeaveserror:nil];
returnresponseJSON;
}
58、身份证号验证
-(BOOL)validateIdentityCard{
BOOLflag;
if(self.length=0){
flag=NO;
returnflag;
}
NSString*regex2=@"^(d{14}|d{17})(d|[xX])$";
NSPredicate*identityCardPredicate=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",regex2];
return[identityCardPredicateevaluateWithObject:self];
}
59、获取装备mac地点
+(NSString*)macAddress{
intmib[6];
size_tlen;
char*buf;
unsignedchar*ptr;
structif_msghdr*ifm;
structsockaddr_dl*sdl;
mib[0]=CTL_NET;
mib[1]=AF_ROUTE;
mib[2]=0;
mib[3]=AF_LINK;
mib[4]=NET_RT_IFLIST;
if((mib[5]=if_nametoindex("en0"))==0){
printf("Error:if_nametoindexerrorn");
returnNULL;
}
if(sysctl(mib,6,NULL,len,NULL,0)0){
printf("Error:sysctl,take1n");
returnNULL;
}
if((buf=malloc(len))==NULL){
printf("Couldnotallocatememory.Rrror!n");
returnNULL;
}
if(sysctl(mib,6,buf,len,NULL,0)0){
printf("Error:sysctl,take2");
returnNULL;
}
ifm=(structif_msghdr*)buf;
sdl=(structsockaddr_dl*)(ifm+1);
ptr=(unsignedchar*)LLADDR(sdl);
NSString*outstring=[NSStringstringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",
*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5)];
free(buf);
returnoutstring;
}
60、导入自界说字体库
1、找到你想用的字体的ttf格式,拖入工程
2、在工程的plist中增长一行数组,“Fontsprovidedbyapplication”
3、为这个key添加一个item,value为你刚才导入的ttf文件名
4、直接利用即可:label.font=[UIFontfontWithName:@"你刚才导入的ttf文件名"size:20.0];
61、拿到当前正在表现的控制器,不管是push进去的,还是present进去的都能拿到
-(UIViewController*)getVisibleViewControllerFrom:(UIViewController*)vc{
if([vcisKindOfClass:[UINavigationControllerclass]]){
return[selfgetVisibleViewControllerFrom:[((UINavigationController*)vc)visibleViewController]];
}elseif([vcisKindOfClass:[UITabBarControllerclass]]){
return[selfgetVisibleViewControllerFrom:[((UITabBarController*)vc)selectedViewController]];
}else{
if(vc.presentedViewController){
return[selfgetVisibleViewControllerFrom:vc.presentedViewController];
}else{
returnvc;
}
}
}
62、runtime为一个类动态添加属性
//动态添加属性的本质是:让对象的某个属性与值产生关联
objc_setAssociatedObject(self,WZBPlaceholderViewKey,placeholderView,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
63、获取runtime为一个类动态添加的属性
objc_getAssociatedObject(self,WZBPlaceholderViewKey);
64、KVO监听某个对象的属性
//添加监听者
[selfaddObserver:selfforKeyPath:propertyoptions:NSKeyValueObservingOptionNewcontext:nil];
//当监听的属性值变革的时间会来到这个方法
-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary*)changecontext:(void*)context{
if([keyPathisEqualToString:@"property"]){
[selftextViewTextChange];
}else{
}
}
65、Reachability判定网络状态
NetworkStatusstatus=[[ReachabilityreachabilityForInternetConnection]currentReachabilityStatus];
if(status==NotReachable){
NSLog(@"当前装备无网络");
}
if(status==ReachableViaWiFi){
NSLog(@"当前wifi网络");
}
if(status==NotReachable){
NSLog(@"当前蜂窝移动网络");
}
由于微信字数限定缘故起因,放不下全文,请点击阅读原文,查察完备版文章。
我要评论