不定时添加笔记<二>

1, 把tableview里cell的小对勾的颜色改成别的颜色?

  _mTableView.tintColor = [UIColor redColor];
1419815807199742.jpg

2, 离屏渲染问题的本质是什么?

  首先离屏渲染指的是在GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作.
  当使用圆角,阴影,遮罩的时候,图层属性的混合体被指定为在未预合成之前(下一个HSync信号开始前)不能直接在屏幕中绘制,所以就需要屏幕外渲染。

3, 影响二维码扫描速度的难点是什么?
二维码图像的清晰度, 角度

对于AVFoundation来说,有两个因素:

  图像分辨率
  AVCaptureSession 可以设置 sessionPreset 属性,这个决定了视频输入每一帧图像质量的大小。

  AVCaptureSessionPreset320x240
  AVCaptureSessionPreset352x288
  AVCaptureSessionPreset640x480
  AVCaptureSessionPreset960x540
  AVCaptureSessionPreset1280x720
  AVCaptureSessionPreset1920x1080
  
  扫描范围
  AVCaptureMetadataOutput 的 rectOfInterest 属性来配置解析范围

4, 移动端click事件有300 ms的延迟响应问题

历史原因:

  2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放(double tap to zoom)的方案,比如你在手机上用浏览器打开一个PC上的网页,你可能在看到页面内容虽然可以撑满整个屏幕,但是字体、图片都很小看不清,此时可以快速双击屏幕上的某一部分,你就能看清该部分放大后的内容,再次双击后能回到原始状态。

  双击缩放是指用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。

  原因就出在浏览器需要如何判断快速点击上,当用户在屏幕上单击某一个元素时候,例如跳转链接[](https://segmentfault.com/a/1190000000410773#),此处浏览器会先捕获该次单击,但浏览器不能决定用户是单纯要点击链接还是要双击该部分区域进行缩放操作,所以,捕获第一次单击后,浏览器会先Hold一段时间t,如果在t时间区间里用户未进行下一次点击,则浏览器会做单击跳转链接的处理,如果t时间里用户进行了第二次单击操作,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操作。
  
  那么这个时间区间t有多少呢?在IOS safari下,大概为300毫秒。这就是延迟的由来。造成的后果用户纯粹单击页面,页面需要过一段时间才响应,给用户慢体验感觉,对于web开发者来说是,页面js捕获click事件的回调函数处理,需要300ms后才生效,也就间接导致影响其他业务逻辑的处理。

解决方案:

  1, fastclick.js  可以解决在手机上点击事件的300ms延迟: 链接: https://github.com/ftlabs/fastclick
  2, zepto.js  的touch模块,tap事件也是为了解决在click的延迟问题
  触摸事件的响应顺序: 
        1、ontouchstart 
        2、ontouchmove 
        3、ontouchend 
        4、onclick
  解决300ms延迟的问题,也可以通过绑定ontouchstart事件,加快对事件的响应

5, 导入自定义字体库

  1)、找到你想用的字体的 ttf 格式,拖入工程
  2)、在工程的plist中增加一行数组,“Fonts provided by application”
  3)、为这个key添加一个item,value为你刚才导入的ttf文件名
  4)、直接使用即可:label.font = [UIFont fontWithName:@"你刚才导入的ttf文件名" size:20.0];

6, 获取一个视频的第一帧图片

  - (UIImage*)videoOnePict:(NSString*)filepath{
        NSURL *url = [NSURL URLWithString:filepath];
        AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:url options:nil];
        AVAssetImageGenerator *generate1 = [[AVAssetImageGenerator alloc] initWithAsset:asset1];
        generate1.appliesPreferredTrackTransform = YES;
        NSError *err = NULL;
        CMTime time = CMTimeMake(1, 2);
        CGImageRef oneRef = [generate1 copyCGImageAtTime:time actualTime:NULL error:&err];
        UIImage *one = [[UIImage alloc] initWithCGImage:oneRef];
        return one;
  }

7, 获取视频的时长

  + (NSInteger)getVideoTimeByUrlString:(NSString *)urlString {
      NSURL *videoUrl = [NSURL URLWithString:urlString];
      AVURLAsset *avUrl = [AVURLAsset assetWithURL:videoUrl];
      CMTime time = [avUrl duration];
      int seconds = ceil(time.value/time.timescale);
      return seconds;
  }

8, 删除某个view所有的子视图

  [[someView subviews]

makeObjectsPerformSelector:@selector(removeFromSuperview)];

9, 删除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];
  }
  // 方法三
  [[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:     [[NSBundle mainBundle] bundleIdentifier]];

10, 禁用系统滑动返回功能

  - (void)viewDidAppear:(BOOL)animated{
       [super viewDidAppear:animated];
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
              self.navigationController.interactivePopGestureRecognizer.delegate = self;
        }
  }

  - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]){
              self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
  }
  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
       return NO;
  }

11, 将一个image保存在相册中

  UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

或者

  #import <Photos/Photos.h>
  [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
              changeRequest.creationDate = [NSDate date];
        } completionHandler:^(BOOL success, NSError *error) {
              if (success) {
                    NSLog(@"successfully saved");
              } else {
                    NSLog(@"error saving to photos: %@", error);
              }
  }];

12, UITextView中打开或禁用复制,剪切,选择,全选等功能

  // 继承UITextView重写这个方法
  - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        // 返回NO为禁用,YES为开启
      // 粘贴
      if (action == @selector(paste:)) return NO;
      // 剪切
      if (action == @selector(cut:)) return NO;
      // 复制
      if (action == @selector(copy:)) return NO;
      // 选择
      if (action == @selector(select:)) return NO;
      // 选中全部
      if (action == @selector(selectAll:)) return NO;
      // 删除
      if (action == @selector(delete:)) return NO;
      // 分享
      if (action == @selector(share)) return NO;
      return [super canPerformAction:action withSender:sender];
  }

13, 将一个view保存为pdf格式

- (void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename{
    NSMutableData *pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();
    [aView.layer renderInContext:pdfContext];
    UIGraphicsEndPDFContext();

    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
}

14, main()之前的加载时间

它可以通过以下方式来显示。

793918-a3499b494fd6c598.png
793918-1883d0d4d1ab9565.png

main()调用之后的加载时间

准备阶段,主要是图片的解码
布局阶段,-(void)layoutSubViews()
绘制阶段,-(void)drawRect:(CGRect)rect
启动阶段必要服务的启动、必要数据的创建和读取。

优化启动时间

内嵌的dylib尽可能少,或者合并起来。
Rebase/Binding减少__DATA中需要修正的指针。 对于oc来说减少 class, selector, category     这些元数据的数量,对与c++来说,减少虚函数数量。swift结构体需要修正的比较少。
将不必须在+load中做的事延迟到+ initialize中。
不使用xib,直接用代码加载首页视图。
release版不要用NSLog输出。
启动时的网络请求尽可能异步。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容