不定時(shí)添加筆記<二>

1, 把tableview里cell的小對勾的顏色改成別的顏色?

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

2, 離屏渲染問題的本質(zhì)是什么?

  首先離屏渲染指的是在GPU在當(dāng)前屏幕緩沖區(qū)以外開辟一個(gè)緩沖區(qū)進(jìn)行渲染操作.
  當(dāng)使用圓角熔吗,陰影姆钉,遮罩的時(shí)候,圖層屬性的混合體被指定為在未預(yù)合成之前(下一個(gè)HSync信號(hào)開始前)不能直接在屏幕中繪制听诸,所以就需要屏幕外渲染坐求。

3, 影響二維碼掃描速度的難點(diǎn)是什么?
二維碼圖像的清晰度, 角度

對于AVFoundation來說蛇更,有兩個(gè)因素:

  圖像分辨率
  AVCaptureSession 可以設(shè)置 sessionPreset 屬性瞻赶,這個(gè)決定了視頻輸入每一幀圖像質(zhì)量的大小。

  AVCaptureSessionPreset320x240
  AVCaptureSessionPreset352x288
  AVCaptureSessionPreset640x480
  AVCaptureSessionPreset960x540
  AVCaptureSessionPreset1280x720
  AVCaptureSessionPreset1920x1080
  
  掃描范圍
  AVCaptureMetadataOutput 的 rectOfInterest 屬性來配置解析范圍

4, 移動(dòng)端click事件有300 ms的延遲響應(yīng)問題

歷史原因:

  2007年蘋果發(fā)布首款iphone上IOS系統(tǒng)搭載的safari為了將適用于PC端上大屏幕的網(wǎng)頁能比較好的展示在手機(jī)端上派任,使用了雙擊縮放(double tap to zoom)的方案砸逊,比如你在手機(jī)上用瀏覽器打開一個(gè)PC上的網(wǎng)頁,你可能在看到頁面內(nèi)容雖然可以撐滿整個(gè)屏幕掌逛,但是字體师逸、圖片都很小看不清,此時(shí)可以快速雙擊屏幕上的某一部分豆混,你就能看清該部分放大后的內(nèi)容篓像,再次雙擊后能回到原始狀態(tài)动知。

  雙擊縮放是指用手指在屏幕上快速點(diǎn)擊兩次,iOS 自帶的 Safari 瀏覽器會(huì)將網(wǎng)頁縮放至原始比例员辩。

  原因就出在瀏覽器需要如何判斷快速點(diǎn)擊上盒粮,當(dāng)用戶在屏幕上單擊某一個(gè)元素時(shí)候,例如跳轉(zhuǎn)鏈接[](https://segmentfault.com/a/1190000000410773#)奠滑,此處瀏覽器會(huì)先捕獲該次單擊丹皱,但瀏覽器不能決定用戶是單純要點(diǎn)擊鏈接還是要雙擊該部分區(qū)域進(jìn)行縮放操作,所以宋税,捕獲第一次單擊后摊崭,瀏覽器會(huì)先Hold一段時(shí)間t,如果在t時(shí)間區(qū)間里用戶未進(jìn)行下一次點(diǎn)擊杰赛,則瀏覽器會(huì)做單擊跳轉(zhuǎn)鏈接的處理呢簸,如果t時(shí)間里用戶進(jìn)行了第二次單擊操作,則瀏覽器會(huì)禁止跳轉(zhuǎn)乏屯,轉(zhuǎn)而進(jìn)行對該部分區(qū)域頁面的縮放操作根时。
  
  那么這個(gè)時(shí)間區(qū)間t有多少呢?在IOS safari下辰晕,大概為300毫秒啸箫。這就是延遲的由來。造成的后果用戶純粹單擊頁面伞芹,頁面需要過一段時(shí)間才響應(yīng)忘苛,給用戶慢體驗(yàn)感覺,對于web開發(fā)者來說是唱较,頁面js捕獲click事件的回調(diào)函數(shù)處理扎唾,需要300ms后才生效,也就間接導(dǎo)致影響其他業(yè)務(wù)邏輯的處理南缓。

解決方案:

  1, fastclick.js  可以解決在手機(jī)上點(diǎn)擊事件的300ms延遲: 鏈接: https://github.com/ftlabs/fastclick
  2, zepto.js  的touch模塊胸遇,tap事件也是為了解決在click的延遲問題
  觸摸事件的響應(yīng)順序: 
        1、ontouchstart 
        2汉形、ontouchmove 
        3纸镊、ontouchend 
        4、onclick
  解決300ms延遲的問題概疆,也可以通過綁定ontouchstart事件逗威,加快對事件的響應(yīng)

5, 導(dǎo)入自定義字體庫

  1)、找到你想用的字體的 ttf 格式岔冀,拖入工程
  2)凯旭、在工程的plist中增加一行數(shù)組,“Fonts provided by application”
  3)、為這個(gè)key添加一個(gè)item罐呼,value為你剛才導(dǎo)入的ttf文件名
  4)鞠柄、直接使用即可:label.font = [UIFont fontWithName:@"你剛才導(dǎo)入的ttf文件名" size:20.0];

6, 獲取一個(gè)視頻的第一幀圖片

  - (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, 獲取視頻的時(shí)長

  + (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, 刪除某個(gè)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, 禁用系統(tǒng)滑動(dòng)返回功能

  - (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, 將一個(gè)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中打開或禁用復(fù)制嫉柴,剪切厌杜,選擇,全選等功能

  // 繼承UITextView重寫這個(gè)方法
  - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        // 返回NO為禁用计螺,YES為開啟
      // 粘貼
      if (action == @selector(paste:)) return NO;
      // 剪切
      if (action == @selector(cut:)) return NO;
      // 復(fù)制
      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, 將一個(gè)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()之前的加載時(shí)間

它可以通過以下方式來顯示期奔。

793918-a3499b494fd6c598.png
793918-1883d0d4d1ab9565.png

main()調(diào)用之后的加載時(shí)間

準(zhǔn)備階段,主要是圖片的解碼
布局階段危尿,-(void)layoutSubViews()
繪制階段,-(void)drawRect:(CGRect)rect
啟動(dòng)階段必要服務(wù)的啟動(dòng)馁痴、必要數(shù)據(jù)的創(chuàng)建和讀取谊娇。

優(yōu)化啟動(dòng)時(shí)間

內(nèi)嵌的dylib盡可能少,或者合并起來罗晕。
Rebase/Binding減少__DATA中需要修正的指針济欢。 對于oc來說減少 class, selector, category     這些元數(shù)據(jù)的數(shù)量,對與c++來說小渊,減少虛函數(shù)數(shù)量法褥。swift結(jié)構(gòu)體需要修正的比較少。
將不必須在+load中做的事延遲到+ initialize中酬屉。
不使用xib半等,直接用代碼加載首頁視圖。
release版不要用NSLog輸出呐萨。
啟動(dòng)時(shí)的網(wǎng)絡(luò)請求盡可能異步杀饵。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谬擦,隨后出現(xiàn)的幾起案子切距,更是在濱河造成了極大的恐慌,老刑警劉巖惨远,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谜悟,死亡現(xiàn)場離奇詭異,居然都是意外死亡北秽,警方通過查閱死者的電腦和手機(jī)葡幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贺氓,“玉大人礼患,你說我怎么就攤上這事。” “怎么了缅叠?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵悄泥,是天一觀的道長。 經(jīng)常有香客問我肤粱,道長弹囚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任领曼,我火速辦了婚禮鸥鹉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庶骄。我一直安慰自己毁渗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布单刁。 她就那樣靜靜地躺著灸异,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羔飞。 梳的紋絲不亂的頭發(fā)上肺樟,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逻淌,去河邊找鬼么伯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卡儒,可吹牛的內(nèi)容都是我干的田柔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼骨望,長吁一口氣:“原來是場噩夢啊……” “哼凯楔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锦募,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤摆屯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后糠亩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐骑,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年赎线,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廷没。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垂寥,死狀恐怖颠黎,靈堂內(nèi)的尸體忽然破棺而出另锋,到底是詐尸還是另有隱情,我是刑警寧澤狭归,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布夭坪,位于F島的核電站,受9級(jí)特大地震影響过椎,放射性物質(zhì)發(fā)生泄漏室梅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一疚宇、第九天 我趴在偏房一處隱蔽的房頂上張望亡鼠。 院中可真熱鬧,春花似錦敷待、人聲如沸间涵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勾哩。三九已至,卻和暖如春根盒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背物蝙。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人飒炎。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓谁不,卻偏偏與公主長得像,于是被迫代替她去往敵國和親震嫉。 傳聞我的和親對象是個(gè)殘疾皇子森瘪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容