| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- //
- // Util.m
- // IBOSS
- //
- // Created by iHope on 14-6-6.
- // Copyright (c) 2017年 沈阳东科云信软件有限公司. All rights reserved.
- //
- #import "Util.h"
- #import "AchiementDepartmentInfoModel.h"
- #import "sys/utsname.h"
- @implementation Util
- + (void)alignLabelWithTop:(UILabel *)label{
- CGSize maxSize = CGSizeMake(label.frame.size.width, 999);
- label.adjustsFontSizeToFitWidth = NO;
- CGSize actualSize = [label.text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode];
- CGRect rect = label.frame;
- rect.size.height = actualSize.height;
- label.frame = rect;
- }
- + (NSString *)positiveFormat:(NSString *)text{
-
- if(!text || [text floatValue] == 0){
- return @"¥0.00";
- }else{
- NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
- [numberFormatter setPositiveFormat:@"¥,###.00;"];
- return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:[text doubleValue]]];
- }
- return @"";
-
- }
- +(NSString*)thousandSeparatorFormat:(NSString *)number
- {
- if(!number || [number floatValue] == 0){
- return @"0.00";
- }else{
- NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
- [numberFormatter setPositiveFormat:@",###.00;"];
- return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:[number doubleValue]]];
- }
- return @"";
- }
- + (NSString*)objectToJson:(id)_obj{
- if (_obj == nil) {
- return @"";
- }
- NSError *parseError = nil;
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:_obj options:NSJSONWritingPrettyPrinted error:&parseError];
- return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
- }
- + (CGFloat)getPhotoCollectionViewHeightWithPhotos:(NSArray *)photos {
- //屏幕横向最大装的图片数
- double max = (int) ceil(SCREENWIDTH/125);
- double count = photos.count;
- double row;
- if(count > max){
- double c = fmod (count,max);
- if(c>0){
- row = (count - c)/max + 1;
- }
- else{
- row=count/max;
- }
- return row * 85 + row * 5;
- }
-
- else if(count != 0 && count <= max){
- return 90;
- }
- return 0;
- }
- // 判断电话是否有效
- + (BOOL)isValidTelephone:(NSString *)telephone{
- /**
- * 手机号码
- * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,147
- * 联通:130,131,132,152,155,156,185,186
- * 电信:133,1349,153,180,181,189
- */
- NSString *mobile = @"^1(3[0-9]|5[0-35-9]|8[012345-9]|47|7[013678])\\d{8}$";
- /**
- * 大陆地区固话及小灵通 区号和电话之间没有-
- * 区号:010,020,021,022,023,024,025,027,028,029
- * 号码:七位或八位
- */
- NSString *phs = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
-
- NSPredicate *predicatemobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobile];
- NSPredicate *predicatephs = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phs];
-
-
- return [predicatemobile evaluateWithObject:telephone] || [predicatephs evaluateWithObject:telephone];
- }
- #pragma mark 判断是否为整形
- +(BOOL)isPureInt:(NSString*)string{
- NSScanner* scan = [NSScanner scannerWithString:string];
- int val;
- return [scan scanInt:&val] && [scan isAtEnd];
- }
- + (BOOL)isValidMobilePhone:(NSString *)telephone
- {
- /**
- * 手机号码
- * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,147
- * 联通:130,131,132,152,155,156,185,186
- * 电信:133,1349,153,180,181,189
- */
- // NSString *mobile = @"^1(3[0-9]|5[0-35-9]|8[0-9]|9[0-9]|47|7[013678])\\d{8}$";
-
- NSString *mobile = @"^1(3[0-9]|5[0-35-9]|8[012345-9]|6[0-9]|47|9[0-9]|7[0-9])\\d{8}$";
-
- NSPredicate *predicatemobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobile];
-
- return [predicatemobile evaluateWithObject:telephone];
- }
- /**
- 从状态栏中获取网络类型,代码如下
- @return <#return value description#>
- */
- + (NSString *) getNetWorkStates{
- UIApplication *app = [UIApplication sharedApplication];
- NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
- NSString *state = [[NSString alloc]init];
- int netType = 0;
- //获取到网络返回码
- for (id child in children) {
- if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
- //获取到状态栏
- netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];
-
- switch (netType) {
- case 0:
- state = @"无网络";
- //无网模式
- break;
- case 1:
- state = @"2G";
- break;
- case 2:
- state = @"3G";
- break;
- case 3:
- state = @"4G";
- break;
- case 5:
- {
- state = @"wifi";
- break;
- default:
- break;
- }
- }
- }
- //根据状态选择
- }
- return state;
- }
- +(NSMutableArray *)findAllParents:(NSArray*) arry minLength:(NSInteger) len{
- NSMutableArray *parentsNodeArray=[[NSMutableArray alloc]init];
- if(arry !=nil&&arry.count>0){
- for (int i=0;i<arry.count;i++){
- AchiementDepartmentInfoModel *currentModel= arry[i];
- if(currentModel.organizationCode!=nil){
- if(currentModel.organizationCode.length==len){
- [parentsNodeArray addObject:currentModel];
- }
- }
- }
- }
- return parentsNodeArray;
- }
- +(NSInteger)findDepartmentsRootNodeLength:(NSArray*)departmentArray{
- NSInteger minSize=0;
- if(departmentArray !=nil&&departmentArray.count>0){
- AchiementDepartmentInfoModel *minModel= departmentArray[0];
-
- NSString *minCode=minModel.organizationCode;
- for(int i=0;i<departmentArray.count;i++){
- AchiementDepartmentInfoModel *currentModel=departmentArray[i];
- NSString *currentOrganizationCode= currentModel.organizationCode;
- if(currentOrganizationCode.length<minCode.length){
- minSize= currentOrganizationCode.length;
- }
- else{
- minSize= minCode.length;
- }
-
- }
-
- }
- return minSize;
-
- }
- +(NSMutableArray*)findChildByOrganizationCode:(NSString*)organizationCode allArray:(NSMutableArray*)arry minLength:(NSInteger)minLen {
- NSMutableArray *childrenNodeArray=[[NSMutableArray alloc]init];
- if(arry!=nil&&arry.count>0){
- for(int i=0;i<arry.count;i++){
- AchiementDepartmentInfoModel *currentModel=arry[i];
- if ([currentModel.organizationCode hasPrefix:organizationCode]) {
- if((currentModel.organizationCode.length-organizationCode.length>0)&&(currentModel.organizationCode.length-organizationCode.length==minLen)){
-
- [childrenNodeArray addObject:currentModel];
- }
- }
- }
- }
- return childrenNodeArray;
- }
- +(Boolean)hasChild:(NSString*)organizationCode allArray:(NSMutableArray*)arry minLength:(NSInteger) len{
- Boolean isHaveChild=NO;
- if(arry!=nil&&arry.count>0){
- for(int i=0;i<arry.count;i++){
- AchiementDepartmentInfoModel *currentModel=arry[i];
- if ([currentModel.organizationCode hasPrefix:organizationCode]) {
- if((currentModel.organizationCode.length-organizationCode.length>0)&&(currentModel.organizationCode.length-organizationCode.length==len)){
- isHaveChild=YES;
- }
- }
- }
- }
- return isHaveChild;
- }
- +(void)bindChildByParent:(AchiementDepartmentInfoModel*) currentModel allArray:(NSMutableArray*)arry{
- NSInteger minLength= [Util findDepartmentsRootNodeLength:arry];
- AchiementDepartmentInfoModel *currentMo=currentModel;
- [currentMo setIsExpand:NO];
- NSInteger m=currentMo.organizationCode.length/minLength;
- [currentMo setLevelType:[NSString stringWithFormat:@"Level_Type_%ld",(long)m-1]];
- if([Util hasChild:currentMo.organizationCode allArray:arry minLength:minLength]){
- NSMutableArray *childArray= [Util findChildByOrganizationCode:currentMo.organizationCode allArray:arry minLength:minLength];
- NSMutableArray *tempChild=[[NSMutableArray alloc]init];
- for(int i=0;i<childArray.count;i++){
- AchiementDepartmentInfoModel *childM= childArray[i];
- NSInteger n=childM.organizationCode.length/minLength;
- [childM setIsExpand:NO];
- [childM setLevelType:[NSString stringWithFormat:@"Level_Type_%ld",(long)n-1]];
- BusinessDepartmentFrame *businessFrame=[BusinessDepartmentFrame new];
- [businessFrame setDepartmentFrame:childM];
- [tempChild addObject:businessFrame];
- }
-
- [currentMo setChildArray:tempChild];
-
- for(int i=0;i<childArray.count;i++){
- AchiementDepartmentInfoModel *subChildModel= childArray[i];
- if([Util hasChild:subChildModel.organizationCode allArray:arry minLength:minLength]){
- [self bindChildByParent:subChildModel allArray:arry];
-
- }
- }
- }
- }
- + (NSString*)deviceVersion
- {
- // 需要#import "sys/utsname.h"
- struct utsname systemInfo;
- uname(&systemInfo);
- NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
-
- //CLog(@"%@",deviceString);
-
- if ([deviceString isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
- if ([deviceString isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
- if ([deviceString isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
- if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
- if ([deviceString isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4";
- if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
- if ([deviceString isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
- if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
- if ([deviceString isEqualToString:@"iPhone5,3"]) return @"iPhone 5C";
- if ([deviceString isEqualToString:@"iPhone5,4"]) return @"iPhone 5C";
- if ([deviceString isEqualToString:@"iPhone6,1"]) return @"iPhone 5S";
- if ([deviceString isEqualToString:@"iPhone6,2"]) return @"iPhone 5S";
- if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
- if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
- if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6S";
- if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
- if ([deviceString isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
- if ([deviceString isEqualToString:@"iPhone9,1"]) return @"iPhone 7";
- if ([deviceString isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus";
- if ([deviceString isEqualToString:@"iPhone10,1"]) return @"iPhone 8";
- if ([deviceString isEqualToString:@"iPhone10,2"]) return @"iPhone 8 Plus";
- if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
- if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
- if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
- if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
- if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad";
- if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
- if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
- if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
- if ([deviceString isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
- if ([deviceString isEqualToString:@"i386"]) return @"Simulator";
- if ([deviceString isEqualToString:@"x86_64"]) return @"Simulator";
-
- return deviceString;
- }
- @end
|