記錄遇到的兩個(gè)BUG

在iOS8.X上一個(gè)視圖調(diào)用 [self layoutIfNeeded] 方法后庶骄,第一個(gè)子視圖y值發(fā)生改變

ps:也有可能是我的xib拖的有問題劫狠,等后面有心情了栅干,就驗(yàn)證下新锈,到時(shí)再更新。

1治力、近日有同事反饋一個(gè) bug 蒙秒,一個(gè)詳情頁內(nèi)容只顯示一部分,我第一反應(yīng)感覺不可能宵统,眼見為實(shí)税肪,在他的手機(jī)上確實(shí)發(fā)現(xiàn)了這個(gè)問題。經(jīng)過多個(gè)機(jī)型版本的比對發(fā)現(xiàn)榜田,盡在 8.X 的系統(tǒng)發(fā)現(xiàn)這個(gè)問題益兄。

2、介紹下這個(gè)頁面的大概情況箭券,用 xib 拖動(dòng)的頁面净捅,有一些 label 顯示文本信息,文本高度不確定辩块,詳情頁高度沒有添加相關(guān)約束蛔六。模型文本信息賦值給相應(yīng) label 后調(diào)用 [self setNeedsLayout]、[self layoutIfNeeded] 再獲取詳情頁的最后一個(gè)子視圖調(diào)用 CGRectGetMaxY(X.frame)方法獲取最大的y值废亭,作為視圖的高度国章。

3、打斷點(diǎn)調(diào)試發(fā)現(xiàn)豆村,在iOS8.X系統(tǒng)上詳情頁調(diào)用 [self layoutIfNeeded] 方法后液兽,第一個(gè)子視圖的y值為-400,倒數(shù)第二個(gè)視圖的y值為0掌动,百思不得其解四啰。

4、我自己沒有找到很好的計(jì)算方法粗恢。用了一個(gè)在我看來比較笨的方式柑晒,用最后一個(gè)子視圖的最大的y值減去第一個(gè)子視圖的最小的y值的差值最為詳情頁的高度。

請求相冊權(quán)限一個(gè)子線程崩潰

時(shí)間比較遠(yuǎn)了眷射,就直接說BUG和處理方法了

在鍵盤彈起時(shí)匙赞,點(diǎn)擊跳轉(zhuǎn)圖片選擇(重點(diǎn):點(diǎn)擊事件我沒有寫收鍵盤事件,跳轉(zhuǎn)新的controller妖碉,鍵盤自己收起)涌庭,請求圖片訪問權(quán)限狀態(tài),如果是第一次使用嗅绸,請求相關(guān)權(quán)限時(shí)脾猛, completionHandler 回調(diào)事件不在主線程撕彤,這個(gè)地方要加線程判斷鱼鸠。

+ (void)requestAccessForMediaType:(NSString *)mediaType completionHandler:(void (^)(BOOL granted))handler

文本高度計(jì)算結(jié)果不對

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context 

計(jì)算一段文字猛拴,一般都用的是上述方法。但又一次蚀狰,有客戶想我反饋愉昆,有一處的文本信息沒有顯示完整。我拿到了這串文本多次嘗試麻蹋,重現(xiàn)了過程跛溉。

textview 輸入一些文字后,一直輸入空格扮授,直到換行芳室,繼續(xù)輸入文本信息,點(diǎn)擊發(fā)送刹勃。用上述方法計(jì)算出來的高度堪侯,不夠顯示全部文本,我換了網(wǎng)上找到的方法

//    CGMutablePathRef Path = CGPathCreateMutable();
// 
//    //坐標(biāo)點(diǎn)在左下角
//    CGPathAddRect(Path, NULL ,CGRectMake(0 , 0 ,size.width, size.height));
//    
//    CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), Path, NULL);

//    int total_height = 0;
//    
//    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrStr);    //string 為要計(jì)算高度的NSAttributedString
//    CGRect drawingRect = CGRectMake(0, 0, size.width, 10000);  //這里的高要設(shè)置足夠大
//    CGMutablePathRef path = CGPathCreateMutable();
//    CGPathAddRect(path, NULL, drawingRect);
//    CTFrameRef textFrame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0), path, NULL);
//    CGPathRelease(path);
//    CFRelease(framesetter);
//    
//    NSArray *linesArray = (NSArray *) CTFrameGetLines(textFrame);
//    
//    CGPoint origins[[linesArray count]];
//    CTFrameGetLineOrigins(textFrame, CFRangeMake(0, 0), origins);
//    
//    int line_y = (int) origins[[linesArray count] -1].y;  //最后一行l(wèi)ine的原點(diǎn)y坐標(biāo)
//    
//    CGFloat ascent;
//    CGFloat descent;
//    CGFloat leading;
//    
//    CTLineRef line = (__bridge CTLineRef) [linesArray objectAtIndex:[linesArray count]-1];
//    CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
//    
//    total_height = 10000 - line_y + (int) descent +1 +linesArray.count * ascent;    //+1為了糾正descent轉(zhuǎn)換成int小數(shù)點(diǎn)后舍去的值
//    
//    CFRelease(textFrame);
//    
//    return CGSizeMake(size.width, total_height) ;

計(jì)算出來的高度還是不夠顯示文本荔仁。

解決方法:用 YYLabel 顯示文本信息伍宦,用 YYTextLayout 布局要顯示的文本信息,獲取文本高度乏梁。

最后次洼,只是個(gè)人的解決方法,原因沒有找到遇骑,就是不知其所以然卖毁。望指點(diǎn),不吝感謝落萎!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末势篡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子模暗,更是在濱河造成了極大的恐慌禁悠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兑宇,死亡現(xiàn)場離奇詭異碍侦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隶糕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門瓷产,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枚驻,你說我怎么就攤上這事濒旦。” “怎么了再登?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵尔邓,是天一觀的道長晾剖。 經(jīng)常有香客問我,道長梯嗽,這世上最難降的妖魔是什么齿尽? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮灯节,結(jié)果婚禮上循头,老公的妹妹穿的比我還像新娘。我一直安慰自己炎疆,他們只是感情好卡骂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著形入,像睡著了一般偿警。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唯笙,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天螟蒸,我揣著相機(jī)與錄音,去河邊找鬼崩掘。 笑死七嫌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苞慢。 我是一名探鬼主播诵原,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挽放!你這毒婦竟也來了绍赛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤辑畦,失蹤者是張志新(化名)和其女友劉穎吗蚌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纯出,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚯妇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暂筝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箩言。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖焕襟,靈堂內(nèi)的尸體忽然破棺而出陨收,到底是詐尸還是另有隱情,我是刑警寧澤鸵赖,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布务漩,位于F島的核電站拄衰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菲饼。R本人自食惡果不足惜肾砂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一列赎、第九天 我趴在偏房一處隱蔽的房頂上張望宏悦。 院中可真熱鬧,春花似錦包吝、人聲如沸饼煞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砖瞧。三九已至,卻和暖如春嚷狞,著一層夾襖步出監(jiān)牢的瞬間块促,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工床未, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竭翠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓薇搁,卻偏偏與公主長得像斋扰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子啃洋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

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