ios培训:ios技巧总结,错过就不在!

  今天给大家总结了一些iOS小技巧总结,绝对有你想要的!绝对有你想要的!

  UITableView的Group样式下顶部空白处理

  //分组列表头部空白处理

  UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)];

  self.tableView.tableHeaderView = view;

  获取某个view所在的控制器

  - (UIViewController *)viewController

  {

  UIViewController *viewController = nil;

  UIResponder *next = self.nextResponder;

  while (next)

  {

  if ([next isKindOfClass:[UIViewController class]])

  {

  viewController = (UIViewController *)next;

  break;

  }

  next = next.nextResponder;

  }

  return viewController;

  }

  两种方法删除NSUserDefaults所有记录

  //方法一

  NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];

  [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

  //方法二

  - (void)resetDefaults

  {

  NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];

  NSDictionary * dict = [defs dictionaryRepresentation];

  for (id key in dict)

  {

  [defs removeObjectForKey:key];

  }

  [defs synchronize];

  }

  打印系统所有已注册的字体名称

  #pragma mark - 打印系统所有已注册的字体名称

  void enumerateFonts()

  {

  for(NSString *familyName in [UIFont familyNames])

  {

  NSLog(@"%@",familyName);

  NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];

  for(NSString *fontName in fontNames)

  {

  NSLog(@"\t|- %@",fontName);

  }

  }

  }

  获取图片某一点的颜色

  - (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image

  {

  UIColor* color = nil;

  CGImageRef inImage = image.CGImage;

  CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];

  if (cgctx == NULL) {

  return nil; /* error */

  }

  size_t w = CGImageGetWidth(inImage);

  size_t h = CGImageGetHeight(inImage);

  CGRect rect = {{0,0},{w,h}};

  CGContextDrawImage(cgctx, rect, inImage);

  unsigned char* data = CGBitmapContextGetData (cgctx);

  if (data != NULL) {

  int offset = 4*((w*round(point.y))+round(point.x));

  int alpha = data[offset];

  int red = data[offset+1];

  int green = data[offset+2];

  int blue = data[offset+3];

  color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:

  (blue/255.0f) alpha:(alpha/255.0f)];

  }

  CGContextRelease(cgctx);

  if (data) {

  free(data);

  }

  return color;

  }

  字符串反转

  第一种:

  - (NSString *)reverseWordsInString:(NSString *)str

  {

  NSMutableString *newString = [[NSMutableString alloc] initWithCapacity:str.length];

  for (NSInteger i = str.length - 1; i >= 0 ; i --)

  {

  unichar ch = [str characterAtIndex:i];

  [newString appendFormat:@"%c", ch];

  }

  return newString;

  }

  //第二种:

  - (NSString*)reverseWordsInString:(NSString*)str

  {

  NSMutableString *reverString = [NSMutableString stringWithCapacity:str.length];

  [str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

  [reverString appendString:substring];

  }];

  return reverString;

  }

  禁止锁屏

  默认情况下,当设备一段时间没有触控动作时,iOS会锁住屏幕。但有一些应用是不需要锁屏的,比如视频播放器。

  [UIApplication sharedApplication].idleTimerDisabled = YES;

  或

  [[UIApplication sharedApplication] setIdleTimerDisabled:YES];

  模态推出透明界面

  UIViewController *vc = [[UIViewController alloc] init];

  UINavigationController *na = [[UINavigationController alloc] initWithRootViewController:vc];

  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

  {

  na.modalPresentationStyle = UIModalPresentationOverCurrentContext;

  }

  else

  {

  self.modalPresentationStyle=UIModalPresentationCurrentContext;

  }

  [self presentViewController:na animated:YES completion:nil];

  Xcode调试不显示内存占用

  editSCheme 里面有个选项叫叫做enable zoombie Objects 取消选中

  显示隐藏文件

  //显示

  defaults write com.apple.finder AppleShowAllFiles -bool true

  killall Finder

  //隐藏

  defaults write com.apple.finder AppleShowAllFiles -bool false

  killall Finder

  iOS跳转到App Store下载应用评分

  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APPID"]];

  iOS 获取汉字的拼音

  + (NSString *)transform:(NSString *)chinese

  {

  //将NSString装换成NSMutableString

  NSMutableString *pinyin = [chinese mutableCopy];

  //将汉字转换为拼音(带音标)

  CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);

  NSLog(@"%@", pinyin);

  //去掉拼音的音标

  CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);

  NSLog(@"%@", pinyin);

  //返回最近结果

  return pinyin;

  }

  手动更改iOS状态栏的颜色

  - (void)setStatusBarBackgroundColor:(UIColor *)color

  {

  UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

  if ([statusBar respondsToSelector:@selector(setBackgroundColor:)])

  {

  statusBar.backgroundColor = color;

  }

  }

  判断当前ViewController是push还是present的方式显示的

  NSArray *viewcontrollers=self.navigationController.viewControllers;

  if (viewcontrollers.count > 1)

  {

  if ([viewcontrollers objectAtIndex:viewcontrollers.count - 1] == self)

  {

  //push方式

  [self.navigationController popViewControllerAnimated:YES];

  }

  }

  else

  {

  //present方式

  [self dismissViewControllerAnimated:YES completion:nil];

  }

  获取实际使用的LaunchImage图片

  - (NSString *)getLaunchImageName

  {

  CGSize viewSize = self.window.bounds.size;

  // 竖屏

  NSString *viewOrientation = @"Portrait";

  NSString *launchImageName = nil;

  NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];

  for (NSDictionary* dict in imagesDict)

  {

  CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);

  if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])

  {

  launchImageName = dict[@"UILaunchImageName"];

  }

  }

  return launchImageName;

  }

  iOS在当前屏幕获取第一响应

  UIWindow * keyWindow = [[UIApplication sharedApplication] keyWindow];

  UIView * firstResponder = [keyWindow performSelector:@selector(firstResponder)];

  判断对象是否遵循了某协议

  if ([self.selectedController conformsToProtocol:@protocol(RefreshPtotocol)])

  {

  [self.selectedController performSelector:@selector(onTriggerRefresh)];

  }

  判断view是不是指定视图的子视图

  BOOL isView = [textView isDescendantOfView:self.view];

  NSArray 快速求总和 最大值 最小值 和 平均值

  NSArray *array = [NSArray arrayWithObjects:@"2.0", @"2.3", @"3.0", @"4.0", @"10", nil];

  CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];

  CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];

  CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];

  CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];

  NSLog(@"%f\n%f\n%f\n%f",sum,avg,max,min);

  修改UITextField中Placeholder的文字颜色

  [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

  关于NSDateFormatter的格式

  G: 公元时代,例如AD公元

  yy: 年的后2位

  yyyy: 完整年

  MM: 月,显示为1-12

  MMM: 月,显示为英文月份简写,如 Jan

  MMMM: 月,显示为英文月份全称,如 Janualy

  dd: 日,2位数表示,如02

  d: 日,1-2位显示,如 2

  EEE: 简写星期几,如Sun

  EEEE: 全写星期几,如Sunday

  aa: 上下午,AM/PM

  H: 时,24小时制,0-23

  K:时,12小时制,0-11

  m: 分,1-2位

  mm: 分,2位

  s: 秒,1-2位

  ss: 秒,2位

  S: 毫秒

  获取一个类的所有子类

  + (NSArray *) allSubclasses

  {

  Class myClass = [self class];

  NSMutableArray *mySubclasses = [NSMutableArray array];

  unsigned int numOfClasses;

  Class *classes = objc_copyClassList(&numOfClasses;);

  for (unsigned int ci = 0; ci < numOfClasses; ci++)

  {

  Class superClass = classes[ci];

  do{

  superClass = class_getSuperclass(superClass);

  } while (superClass && superClass != myClass);

  if (superClass)

  {

  [mySubclasses addObject: classes[ci]];

  }

  }

  free(classes);

  return mySubclasses;

  }

  监测IOS设备是否设置了代理,需要CFNetwork.framework

  NSDictionary *proxySettings = (__bridge NSDictionary *)(CFNetworkCopySystemProxySettings());

  NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"http://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));

  NSLog(@"\n%@",proxies);

  NSDictionary *settings = proxies[0];

  NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyHostNameKey]);

  NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyPortNumberKey]);

  NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyTypeKey]);

  if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"])

  {

  NSLog(@"没代理");

  }

  else

  {

  NSLog(@"设置了代理");

  }

  取消UICollectionView的隐式动画

  UICollectionView在reloadItems的时候,默认会附加一个隐式的fade动画,有时候很讨厌,尤其是当你的cell是复合cell的情况下(比如cell使用到了UIStackView)。

  下面几种方法都可以帮你去除这些动画

  //方法一

  [UIView performWithoutAnimation:^{

  [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];

  }];

  //方法二

  [UIView animateWithDuration:0 animations:^{

  [collectionView performBatchUpdates:^{

  [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];

  } completion:nil];

  }];

  //方法三

  [UIView setAnimationsEnabled:NO];

  [self.trackPanel performBatchUpdates:^{

  [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];

  } completion:^(BOOL finished) {

  [UIView setAnimationsEnabled:YES];

  }];

  让Xcode的控制台支持LLDB类型的打印

  打开终端输入三条命令:

  touch ~/.lldbinit

  echo display @import UIKit >> ~/.lldbinit

  echo target stop-hook add -o \"target stop-hook disable\" >> ~/.lldbinit

  CocoaPods pod install/pod update更新慢的问题

  pod install --verbose --no-repo-update

  pod update --verbose --no-repo-update

  如果不加后面的参数,默认会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少

  UIImage 占用内存大小

  UIImage *image = [UIImage imageNamed:@"aa"];

  NSUInteger size = CGImageGetHeight(image.CGImage) * CGImageGetBytesPerRow(image.CGImage);

  GCD timer定时器

  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的category

  - (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;

  }

时间: 2024-11-06 09:58:43

ios培训:ios技巧总结,错过就不在!的相关文章

IOS图片拉伸技巧

IOS 图片拉伸技巧 对于有些图标等按钮 在美工设计的按钮下可以通过拉伸效果处理所需效果,最熟悉的莫过于微信聊天的 椭圆背景,也是通过这个这个原理进行背景图片.  如对该图片拉伸,如何操作? 首先找到要拉伸的部分,很明显 两侧椭圆是不变 要拉伸的是中间部分,如何指定中间部位,先看下图 指定这4个宽度后 会形成黑色模块 直白点就是 这块内容就是拉伸后中间那块不断填充的部分 具体代码: 1 UIImage* img=[UIImage imageNamed:@"2.png"];//原图2 U

小码哥iOS培训机构祝高考学子们旗开得胜

小码哥iOS培训机构祝高考学子们旗开得胜 三年磨一剑,今朝试锋芒,又是一年高考时,今天是6月7日,是全国统考的第一天,小码哥iOS培训机构倡议尽量少开车.不开车,车辆通过考场周围时,别按喇叭,别猛加速:不在学校及住宅区附近开展广场舞等高分贝活动.尽量给考生提供一个安静的考试环境,为考生助力护航! 众所周知,高考是高等学校选拔新生的制度,中国有1300多年科举考试的历史,这一制度曾显示出选拔人才的优越性,深深地影响了东亚各国.1905年,清廷出于发展新教育.培养实用人才的需要,废除了科举制度,转而

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https://github.com/HanGangAndHanMeimei/Code 一.使用for循环 要遍历字典.数组或者是集合,for循环是最简单也用的比较多的方法,示例如下: 1 //普通的for循环遍历 2 -(void)iteratorWithFor 3 { 4 //////////处理数组/////

ios开发小技巧-用宏化简代码

在IOS开发中,要做字典转模型一般情况如下: 1 /** 2 * 声明方法 3 */ 4 - (instancetype) initWithDictionary:(NSDictionary *)dict; 5 + (instancetype) carWithDictionary:(NSDictionary *)dict; 6 7 /** 8 * 实现方法 9 */ 10 - (instancetype)initWithDictionary:(NSDictionary *)dict 11 { 12

iOS开发实用技巧—项目新特性页面的处理

iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController. 头文件代码: 1 // 2 // JMNewfeatureViewController.h 3 // 4 5 #import <UIKit/UIKit.h> 6 7 t

朋友们,我开始创业啦,打算打造一个最牛iOS培训品牌,希望得到你的支持,谢谢!

各位朋友: 由于受不了北京雾霾及个人发展原因,我于今年3月底从北京传智总部离职回到了我的家乡城市广州. 在广州这一个多月的时间里,除了休息.大吃大喝.健身以外,也一直在思考下一步的事业方向.经过再三思考,最终我决定在广州开启属于自己的iOS培训事业,开创一个全新的培训品牌,做一家优秀的IT培训公司. 我计划5月底6月初在广州开始第一个iOS培训班,除了以前的课程,还将会加入新研发的高级课程及项目,希望带领未来的iOS达人们挑战15000+平均薪资,学得较为优秀的孩子可以挑战下20000+薪资.广

iOS开发实用技巧—身份证的正则校验

iOS开发实用技巧—身份证的正则校验 说明: 在ios项目的开发中可能很多地方都需要用到身份证校验,一般在开发的时候很多人都是直接百度去网上荡相关的正则表达式和校验代码,但是网上疯狂粘贴复制的校验代码本身也可能并不准确,可能会有风险,比如2013年1月1号起停止使用15位的身份证,网上的身份证校验普遍支持15位的号码. 在开发过程中,进行类似处理的时候,还是需要一些甄别的能力的,当然也要考虑自己的项目的实际情况.该文贴出了最近项目中使用到得身份证校验代码,以方便有需要的人“谨慎”获取. 一.规则

ios培训 教你清理ios项目不用的图片

ios培训,iOS教程项目经过需求的变更,产品迭代,会经过多次的改版,有些以前不再使用的图片不一定能够及时的清理掉,这些无用的图片一方面让项目图片资源的结构更加的复杂,另一方面会导致ipa包的体积变大. 因此需要清理掉不用的图片资源,在Android项目中使用Lint可以轻松的完成这个任务,在ios上没有找到比较好的工具,借助网上的例子,写了一个python清除Xcode不用的图片资源的脚本. 先介绍下ios中使用图像资源的方式,ios中使用 Images Assets管理图片,项目的图片资源一

IOS培训还值得么

文章结构 1培训机构 各方面的评价 培训安排 收获 2 市场 就业 是否饱和 3 姿势 做好的事情 IOS这几年在IT界一直是热门的讨论话题,之前看着拉钩出品的北上广高薪岗位的人员技术流动也主要指向这几类:IOS开发,安卓开发,前端开发.很显然这几个方向都是跟设计,艺术感联系比较密切.现在的重点话题是IOS,就不讨论别的了. 首先是接触信息的来源,目前周围做IOS开发的人员很多.我依次罗列一下的话: 姓名 简单说明 LY 男生 青农生物专业10级学生,15年4月蓝欧培训,当时同学在那.在北京任职

iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   在终端输入一行代码:python -m SimpleHTTPServer ---第二步:配置环境  打开safari,偏好设置->勾选 "在菜单栏中显示开发菜单",如下图所示. 第三步:编写html文件 在测试文件appdown.html中编写的测试代码如下:   `说明`44493