星空网 > 软件开发 > 操作系统

iOS开发常用代码块(第二弹)

GCD定时器

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行dispatch_source_set_event_handler(timer, ^{  //倒计时结束,关闭  dispatch_source_cancel(timer);   dispatch_async(dispatch_get_main_queue(), ^{  });});dispatch_resume(timer);

 

图片上绘制文字

- (UIImage *)imageWithTitle:(NSString *)title fontSize:(CGFloat)fontSize{  //画布大小  CGSize size=CGSizeMake(self.size.width,self.size.height);  //创建一个基于位图的上下文  UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//opaque:NO scale:0.0  [self drawAtPoint:CGPointMake(0.0,0.0)];  //文字居中显示在画布上  NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];  paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
paragraphStyle.alignment=NSTextAlignmentCenter;//文字居中 //计算文字所占的size,文字居中显示在画布上 CGSize sizeText=[title boundingRectWithSize:self.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]}context:nil].size; CGFloat width = self.size.width; CGFloat height = self.size.height; CGRect rect = CGRectMake((width-sizeText.width)/2, (height-sizeText.height)/2, sizeText.width, sizeText.height); //绘制文字 [title drawInRect:rect withAttributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[ UIColor whiteColor],NSParagraphStyleAttributeName:paragraphStyle}]; //返回绘制的新图形 UIImage *newImage= UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage;}

 

查找一个视图的所有子视图

- (NSMutableArray *)allSubViewsForView:(UIView *)view{  NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];  for (UIView *subView in view.subviews)  {    [array addObject:subView];    if (subView.subviews.count > 0)    {      [array addObjectsFromArray:[self allSubViewsForView:subView]];    }  }  return array;}

 

计算文件大小

//文件大小- (long long)fileSizeAtPath:(NSString *)path{  NSFileManager *fileManager = [NSFileManager defaultManager];  if ([fileManager fileExistsAtPath:path])  {    long long size = [fileManager attributesOfItemAtPath:path error:nil].fileSize;    return size;  }  return 0;}//文件夹大小- (long long)folderSizeAtPath:(NSString *)path{  NSFileManager *fileManager = [NSFileManager defaultManager];  long long folderSize = 0;  if ([fileManager fileExistsAtPath:path])  {    NSArray *childerFiles = [fileManager subpathsAtPath:path];    for (NSString *fileName in childerFiles)    {      NSString *fileAbsolutePath = [path stringByAppendingPathComponent:fileName];      if ([fileManager fileExistsAtPath:fileAbsolutePath])      {        long long size = [fileManager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;        folderSize += size;      }    }  }  return folderSize;}

 

UIView的设置部分圆角

CGRect rect = view.bounds;CGSize radio = CGSizeMake(30, 30);//圆角尺寸UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//这只圆角位置UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayermasklayer.frame = view.bounds;masklayer.path = path.CGPath;//设置路径view.layer.mask = masklayer;

 

计算字符串字符长度,一个汉字算两个字符

//方法一:- (int)convertToInt:(NSString*)strtemp{  int strlength = 0;  char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];  for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++)  {    if (*p)    {      p++;      strlength++;    }    else    {      p++;    }  }  return strlength;}//方法二:-(NSUInteger) unicodeLengthOfString: (NSString *) text{  NSUInteger asciiLength = 0;  for (NSUInteger i = 0; i < text.length; i++)  {    unichar uc = [text characterAtIndex: i];    asciiLength += isascii(uc) ? 1 : 2;  }  return asciiLength;}

 

防止滚动视图手势覆盖侧滑手势

[scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];

 

去掉导航栏返回的标题

[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)forBarMetrics:UIBarMetricsDefault];

 

字符串中是否含有中文

+ (BOOL)checkIsChinese:(NSString *)string{  for (int i=0; i<string.length; i++)  {    unichar ch = [string characterAtIndex:i];    if (0x4E00 <= ch && ch <= 0x9FA5)    {      return YES;    }  }  return NO;}

 

dispatch_group的使用

dispatch_group_t dispatchGroup = dispatch_group_create();  dispatch_group_enter(dispatchGroup);  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{    NSLog(@"第一个请求完成");    dispatch_group_leave(dispatchGroup);  });  dispatch_group_enter(dispatchGroup);  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{    NSLog(@"第二个请求完成");    dispatch_group_leave(dispatchGroup);  });  dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){    NSLog(@"请求完成");  });

 

UITextField每四位加一个空格,实现代理

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{  // 四位加一个空格  if ([string isEqualToString:@""])  {    // 删除字符    if ((textField.text.length - 2) % 5 == 0)    {      textField.text = [textField.text substringToIndex:textField.text.length - 1];    }    return YES;  }  else  {    if (textField.text.length % 5 == 0)    {      textField.text = [NSString stringWithFormat:@"%@ ", textField.text];    }  }  return YES;}

 

获取手机安装的应用

Class c =NSClassFromString(@"LSApplicationWorkspace");id s = [(id)c performSelector:NSSelectorFromString(@"defaultWorkspace")];NSArray *array = [s performSelector:NSSelectorFromString(@"allInstalledApplications")];for (id item in array){  NSLog(@"%@",[item performSelector:NSSelectorFromString(@"applicationIdentifier")]);  NSLog(@"%@",[item performSelector:NSSelectorFromString(@"bundleVersion")]);  NSLog(@"%@",[item performSelector:NSSelectorFromString(@"shortVersionString")]);}

 

应用内打开系统设置界面

//iOS8之后[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];//如果App没有添加权限,显示的是设定界面。如果App有添加权限(例如通知),显示的是App的设定界面。//iOS8之前//先添加一个url type,在代码中调用如下代码,即可跳转到设置页面的对应项[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];可选值如下:About — prefs:root=General&path=AboutAccessibility — prefs:root=General&path=ACCESSIBILITYAirplane Mode On — prefs:root=AIRPLANE_MODEAuto-Lock — prefs:root=General&path=AUTOLOCKBrightness — prefs:root=BrightnessBluetooth — prefs:root=General&path=BluetoothDate & Time — prefs:root=General&path=DATE_AND_TIMEFaceTime — prefs:root=FACETIMEGeneral — prefs:root=GeneralKeyboard — prefs:root=General&path=KeyboardiCloud — prefs:root=CASTLEiCloud Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUPInternational — prefs:root=General&path=INTERNATIONALLocation Services — prefs:root=LOCATION_SERVICESMusic — prefs:root=MUSICMusic Equalizer — prefs:root=MUSIC&path=EQMusic Volume Limit — prefs:root=MUSIC&path=VolumeLimitNetwork — prefs:root=General&path=NetworkNike + iPod — prefs:root=NIKE_PLUS_IPODNotes — prefs:root=NOTESNotification — prefs:root=NOTIFICATI*****_IDPhone — prefs:root=PhonePhotos — prefs:root=PhotosProfile — prefs:root=General&path=ManagedConfigurationListReset — prefs:root=General&path=ResetSafari — prefs:root=SafariSiri — prefs:root=General&path=AssistantSounds — prefs:root=SoundsSoftware Update — prefs:root=General&path=SOFTWARE_UPDATE_LINKStore — prefs:root=STORETwitter — prefs:root=TWITTERUsage — prefs:root=General&path=USAGEVPN — prefs:root=General&path=Network/VPNWallpaper — prefs:root=WallpaperWi-Fi — prefs:root=WIFI

 

动画暂停再开始

-(void)pauseLayer:(CALayer *)layer{  CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];  layer.speed = 0.0;  layer.timeOffset = pausedTime;}-(void)resumeLayer:(CALayer *)layer{  CFTimeInterval pausedTime = [layer timeOffset];  layer.speed = 1.0;  layer.timeOffset = 0.0;  layer.beginTime = 0.0;  CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;  layer.beginTime = timeSincePause;}

 

iOS版中数字的格式化

//通过NSNumberFormatter,同样可以设置NSNumber输出的格式。例如如下代码:NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];formatter.numberStyle = NSNumberFormatterDecimalStyle;NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];NSLog(@"Formatted number string:%@",string);//输出结果为:[1223:403] Formatted number string:123,456,789//其中NSNumberFormatter类有个属性numberStyle,它是一个枚举型,设置不同的值可以输出不同的数字格式。该枚举包括:typedef NS_ENUM(NSUInteger, NSNumberFormatterStyle) {  NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,  NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,  NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,  NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,  NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,  NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle};//各个枚举对应输出数字格式的效果如下:其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同。[1243:403] Formatted number string:123456789[1243:403] Formatted number string:123,456,789[1243:403] Formatted number string:¥123,456,789.00[1243:403] Formatted number string:-539,222,988%[1243:403] Formatted number string:1.23456789E8[1243:403] Formatted number string:一亿二千三百四十五万六千七百八十九

 

如何获取的WebView所有的图片地址

//UIWebView- (void)webViewDidFinishLoad:(UIWebView *)webView{  //这里是js,主要目的实现对url的获取  static NSString * const jsGetImages =  @"function getImages(){\  var objs = document.getElementsByTagName(\"img\");\  var imgScr = '';\  for(var i=0;i<objs.length;i++){\  imgScr = imgScr + objs[i].src + '+';\  };\  return imgScr;\  };";  [webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法  NSString *urlResult = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];  NSArray *urlArray = [NSMutableArray arrayWithArray:[urlResult componentsSeparatedByString:@"+"]];  //urlResurlt 就是获取到得所有图片的url的拼接;mUrlArray就是所有Url的数组}//WKWebView- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{  static NSString * const jsGetImages =  @"function getImages(){\  var objs = document.getElementsByTagName(\"img\");\  var imgScr = '';\  for(var i=0;i<objs.length;i++){\  imgScr = imgScr + objs[i].src + '+';\  };\  return imgScr;\  };";  [webView evaluateJavaScript:jsGetImages completionHandler:nil];  [webView evaluateJavaScript:@"getImages()" completionHandler:^(id _Nullable result, NSError * _Nullable error) {    NSLog(@"%@",result);  }];}

 

获取到的WebView的高度

CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];

 

导航栏变为纯透明

//第一种方法//导航栏纯透明[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];//去掉导航栏底部的黑线self.navigationBar.shadowImage = [UIImage new];//第二种方法[[self.navigationBar subviews] objectAtIndex:0].alpha = 0;

 

tabBar变为纯透明

[self.tabBar setBackgroundImage:[UIImage new]];self.tabBar.shadowImage = [UIImage new];

 

navigationBar根据滑动距离的渐变色实现

//第一种- (void)scrollViewDidScroll:(UIScrollView *)scrollView{  CGFloat offsetToShow = 200.0;//滑动多少就完全显示  CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;  [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = alpha;}//第二种- (void)scrollViewDidScroll:(UIScrollView *)scrollView{  CGFloat offsetToShow = 200.0;  CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;  [self.navigationController.navigationBar setShadowImage:[UIImage new]];  [self.navigationController.navigationBar setBackgroundImage:[self imageWithColor:[[UIColor orangeColor]colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];}//生成一张纯色的图片- (UIImage *)imageWithColor:(UIColor *)color{  CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);  UIGraphicsBeginImageContext(rect.size);  CGContextRef context = UIGraphicsGetCurrentContext();  CGContextSetFillColorWithColor(context, [color CGColor]);  CGContextFillRect(context, rect);  UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();  UIGraphicsEndImageContext();  return theImage;}

 

小伙伴们,今天就分享到这里,希望大家有所收获!O(∩_∩)O哈哈~

 

 




原标题:iOS开发常用代码块(第二弹)

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊卖家如何有效规避侵权情况发生?:https://www.ikjzd.com/articles/141378
亚马逊直播为什么会让人趋之若鹜?直播情境中消费者的购买意愿如何?:https://www.ikjzd.com/articles/141379
英国当前掘金机会如何?欧洲7国值得开店吗?亚马逊赢在欧洲超全攻略镇楼!:https://www.ikjzd.com/articles/141380
亚马逊的店群模式是什么样子?如何运营?:https://www.ikjzd.com/articles/141381
亚马逊新品上架前期,卖家注意哪些坑?:https://www.ikjzd.com/articles/141382
最新外贸样品寄送技巧:https://www.ikjzd.com/articles/141383
跨境支付百科——巴西支付篇:https://www.kjdsnews.com/a/1836648.html
大福地快捷酒店预订 大福酒店怎么走:https://www.vstour.cn/a/365187.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流