iOS開發(fā)中遇到的問題抡柿,怎么解決的

前言(轉(zhuǎn))

做iOS開發(fā)這么長時間以來,遇到過不少難題等恐,也踩過不少坑洲劣,本來沒想過要寫這篇文章,但是鑒于以下三點课蔬,筆者決定對遇到過的并且還能回憶起來的問題做個記錄闪檬。

每次問題解決后,滿滿的成就感购笆,但是當下一次再遇到時,又是一臉懵逼虚循。這個問題我好像見過同欠,但就是不記得怎么解決,記錄下來方便以后查閱横缔。
每次面試的時候铺遂,面試官總會問我,你在開發(fā)中遇到過哪些問題茎刚,怎么解決的襟锐?問題嘛,挺多的膛锭,但是你要我敘述嘛粮坞,我......我......我居然一時想不起來,迷之尷尬????(面試官當時想法:一看就是個沒工作經(jīng)驗偽造簡歷的)初狰,冤枉啊莫杈。
為遇到同樣問題的開發(fā)者提供一個參考
那些遇到過的問題與踩過的坑

1.手機錄音或通話時,app界面整體下移

當你的iphone在錄音或者通話時奢入,打開app你會發(fā)現(xiàn)筝闹,整個界面都下移了20像素,這個問題對于scrollView腥光、tableView等可以垂直滾動的視圖可能沒有太大影響关顷,但是對于那些不能滾動的視圖,就有可能底部被遮蓋20像素

筆者在網(wǎng)上查閱了資料武福,也試過多種方法议双,這個問題依然存在,最后筆者不得不使用大絕招來解決艘儒,何為大絕招聋伦?很簡單夫偶,位置尺寸寫死。項目中導航控制器是自定義的觉增,在自定義的類中添加如下代碼就OK了

1487575136380593.png

2.點擊導航欄下方也會觸發(fā)導航欄按鈕的點擊事件

如圖所示兵拢,每次想選中右上角的圖片,結(jié)果總是觸發(fā)“取消”事件逾礁,明明沒有點到導航欄上面去说铃,問題的原因不清楚,解決方法創(chuàng)建一個UINavigationBar的分類嘹履,重寫hitTest方法

1487575149557759.png

如果觸摸點不在它上面腻扇,就不讓它接收用戶交互,然后使用系統(tǒng)的事件處理方法去處理

3.輸入中文時限制字符長度

限制字母砾嫉、數(shù)字幼苛、符號等其他非中文字符的長度大家應該都知道咋整,但如果是中文輸入法焕刮,這就比較蛋疼了舶沿。舉個例子,限制長度為5配并,輸入“我愛寫代碼”括荡,當已經(jīng)輸入“我愛寫”兩字,然后輸入“代碼”時就會出現(xiàn)如下情況

1487575164253759.gif

根本寫不進去啊溉旋,這是為什么呢畸冲?因為輸入的拼音也被計算在了字符串長度之內(nèi),導致輸入“da”以后就不能繼續(xù)輸入了观腊,可通過下面的辦法解決

1487575180177685.png

4.修改導航欄顏色

這個問題對有經(jīng)驗的開發(fā)者來說不是問題邑闲,但是當年筆者剛?cè)胄袝r,確實被這個問題折騰了好久梧油。比如想設(shè)置導航欄的顏色為藍色

self.navigationController.navigationBar.backgroundColor = [UIColor blueColor];
運行监憎,然后......????這特么是藍色?筆者確定自己不是色盲

1487575197935687.png

后來才知道婶溯,設(shè)置導航欄的背景色鲸阔,需要設(shè)置barTintColor而不是backgroundColor

self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
5.界面莫名其妙下移

這個問題跟上面的問題一樣,都是比較基礎(chǔ)的問題迄委,有經(jīng)驗的人都知道如何解決褐筛,但是筆者曾經(jīng)也被折磨過

1487575215110728.png

為什么下面textView的內(nèi)容不是從最上面開始的,而且還不能滾上去叙身,當初真的被這種情況折騰的死去活來的渔扎,改frame,改約束信轿,都沒效果晃痴。后來才知道残吩,當有導航控制器時,系統(tǒng)會默認將第一個添加的scrollView或其子類視圖的內(nèi)容下移64個像素倘核,下面的textView是先添加的泣侮,所以其內(nèi)容被下移了,而上面的卻沒有紧唱,解決方法是在控制器里加上下面這句代碼

self.automaticallyAdjustsScrollViewInsets = NO;
6.GCD組函數(shù)

筆者在開發(fā)中遇到過這樣一個功能活尊,某個界面列表上面是企業(yè),下面是聯(lián)系人漏益,而且獲取企業(yè)列表與聯(lián)系人列表的接口不是同一個蛹锰,必須等企業(yè)跟聯(lián)系人列表數(shù)據(jù)都獲取完畢后才能刷新,于是就用到了GCD組函數(shù)

1487575235768582.png

然而問題來了绰疤,[[IBOSServer shared]...]這玩意兒是封裝好的铜犬,并且是個異步函數(shù),大家應該都知道轻庆,異步函數(shù)不會阻塞線程翎苫,不用等里面的內(nèi)容執(zhí)行完就返回了,這就導致數(shù)據(jù)還沒拿到榨了,就開始執(zhí)行notify里面的代碼了。后來筆者發(fā)現(xiàn)攘蔽,原來GCD組函數(shù)還有一種用法龙屉,完美解決問題

1487575253598331.png

7.UISearchController

iOS8才出來的,用來替換UISearchBar + UISearchDisplayController的組合方式满俗,項目中有用到搜索功能转捕,于是筆者就嘗試著用了一下UISearchController,將搜索框添加到了tableView的tableHeaderView上唆垃。然而當點擊搜索框準備搜索時五芝,神奇的事情發(fā)生了

1487575267962878.png

搜索框居然飛到九霄云外去了,好難過辕万,這不是我要的那種結(jié)果枢步,結(jié)果.....
怎么解決呢?在控制器里加上下面這句代碼就OK了渐尿,至于為什么醉途,呵呵????,不知道

self.definesPresentationContext = YES;

8.自定義相機照片截取

這個問題說難不難砖茸,說簡單也不簡單隘擎,筆者當時確實花了很長一段時間才弄清楚,但是當問題解決后凉夯,感覺這特么也不復雜啊货葬,之前怎么就沒整明白呢

1487575307994170.png

問題是這樣的采幌,在使用自定義相機拍完照后,需要對圖片的指定區(qū)域(藍色方框內(nèi)的區(qū)域)進行截取然后上傳震桶,這里存在兩個問題

拍攝時你所看到的區(qū)域休傍,跟實際拍出來的區(qū)域是不一樣的

1487575327951901.png

上圖就是實際拍出來的圖片,明顯比拍攝時看到的圖片要長尼夺,不過寬度是一樣的

照片的坐標系與我們平時開發(fā)所使用的坐標系是不一樣的
開發(fā)中所使用的視圖坐標系是以左上角為原點的尊残,橫向為x軸,縱向為y軸淤堵,而拍攝出來的照片是以右上角為原點的寝衫,橫向為y軸,縱向為x軸
我們先來看一幅圖

1487575354611527.png

由于拍攝時所看到視圖寬高比與實際拍攝出來的圖片的寬高比并不一致拐邪,所以導致圖片經(jīng)過等比例縮放到寬度一樣時慰毅,高度有一部分超出了我們的可視范圍,首先扎阶,我們要計算出超出部分的高度

//_cameraView為相機視圖汹胃,即拍攝時看到圖片的區(qū)域
CGFloat scale = image.size.width / _cameraView.width;//計算出縮放的比例
CGFloat showImageH = image.size.height / scale;//縮放后圖片的高度
CGFloat offsetY = (showImageH - _cameraView.height) * 0.5;//上下超出的部分是相等的,所以*0.5得出上面超過的部分
超出部分的高度計算完后东臀,我們就要來計算藍色方框(_circleView着饥,_cameraView的子控件)的坐標了

x:(offsetY+_circleView.y) * scale,別忘了乘以縮放比例
y:_circleView.x * scale惰赋,因為circleView在父控件中水平居中宰掉,所以_circleView在父控件中的x值乘以縮放比就是在圖片坐標系中的y值
width:_circleView.height scale
height:_circleView.width scale
然后根據(jù)計算好的frame截取圖片就ok了

CGRect rect = CGRectMake(x, y, width,height);
CGImageRef tailorImageRef = CGImageCreateWithImageInRect(photo.CGImage, rect);
UIImage *tailorImage = [UIImage imageWithCGImage:tailorImageRef];
結(jié)束語

遇到過的坑,遠遠不止上面這些赁濒,不過有些不記得了轨奄,以后遇到了再補上吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拒炎,一起剝皮案震驚了整個濱河市挪拟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌击你,老刑警劉巖玉组,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丁侄,居然都是意外死亡球切,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門绒障,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨凑,“玉大人,你說我怎么就攤上這事⊥叶郏” “怎么了糙臼?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恩商。 經(jīng)常有香客問我变逃,道長,這世上最難降的妖魔是什么怠堪? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任揽乱,我火速辦了婚禮,結(jié)果婚禮上粟矿,老公的妹妹穿的比我還像新娘凰棉。我一直安慰自己,他們只是感情好陌粹,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布撒犀。 她就那樣靜靜地躺著,像睡著了一般掏秩。 火紅的嫁衣襯著肌膚如雪或舞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天蒙幻,我揣著相機與錄音映凳,去河邊找鬼。 笑死邮破,一個胖子當著我的面吹牛诈豌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播决乎,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼派桩!你這毒婦竟也來了构诚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤铆惑,失蹤者是張志新(化名)和其女友劉穎范嘱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體员魏,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡丑蛤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年吁系,在試婚紗的時候發(fā)現(xiàn)自己被綠了汉矿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡动猬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棉饶,到底是詐尸還是另有隱情厦章,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布照藻,位于F島的核電站袜啃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幸缕。R本人自食惡果不足惜群发,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望发乔。 院中可真熱鬧熟妓,春花似錦、人聲如沸列疗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抵栈。三九已至告材,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間古劲,已是汗流浹背斥赋。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留产艾,地道東北人疤剑。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像闷堡,于是被迫代替她去往敵國和親隘膘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 前言 做iOS開發(fā)這么長時間以來杠览,遇到過不少難題弯菊,也踩過不少坑,本來沒想過要寫這篇文章踱阿,但是鑒于以下三點管钳,筆者決定...
    codingZero閱讀 7,244評論 18 140
  • 首先聲明,這篇文章大部分是我從cocoaChina上面看的一篇文章www.cocoachina.com/ios/2...
    薰衣草兒閱讀 525評論 0 5
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,708評論 22 664
  • 2015年12月28日,國務(wù)院法制辦官網(wǎng)公布P2P監(jiān)管細則征求意見稿软舌〔牌幔【閱讀全文】銀監(jiān)會就《網(wǎng)絡(luò)借貸信息中介機構(gòu)業(yè)...
    HenryYUE閱讀 1,022評論 0 51
  • 燈火闌珊 人已散 念千里慕思只是當年 無處話離殤 輕舟翩然 月已殘 望十里長亭空留神黯 落日影傾長 夜靜風徒然 只...
    霧veray閱讀 326評論 0 3