iOS開發(fā)中相信大家都遇到過一些問題,經(jīng)常寫的代碼、經(jīng)常用到的一些控件已艰,在某一次用到時痊末,突然出現(xiàn)了一個bug。感覺好不可思議哩掺,總覺得經(jīng)常這樣寫的也沒遇到啊舌胶。下面來看看遇到的新奇問題。
1疮丛、cocoapods中的一些問題:
安裝好cocopods成功后幔嫂,就是搜不到自己想要的第三方庫,搜什么都不行誊薄,說找不到履恩,這個庫的作者之類的問題。[!] Unable to find a pod with name, author, summary, or descriptionmatching
然后就參考http://www.reibang.com/p/d2d81b58d716中的方法呢蔫,將cocoapods的索引刪除切心,
rm ~/Library/Caches/CocoaPods/search_index.json,然后在重新搜索片吊,我的問題就是這樣解決了绽昏,但是可能有的同學(xué)用這樣的方法沒解決掉,那就參考這個鏈接的作者的方法吧俏脊。
While executing gem ... (OpenSSL::SSL::SSLError)
hostname "upyun.gems.ruby-china.org" does not match the server certificate
我這里使用sudo gem update --system替換命令gem update --system全谤,聲明一下如果從一開始就是用sudo的命令,那么以后的命令中也要不用sudo爷贫,否則可能會導(dǎo)致安裝路徑不同认然,造成必要的麻煩。
如果還是不行漫萄,建議升級一下ruby. ? rvm list known ? ? ?rvm install ruby版本
在所有安裝成功后卷员,pod --version能顯示版本,理論上已經(jīng)安裝好了腾务,應(yīng)該能搜索了吧毕骡,但是有時候事實并非如此,我就遇到了下面的這個問題pod search 后
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progres
Cloning into 'master'...
remote: Counting objects: 1464130, done.
remote: Compressing objects: 100% (439/439), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
然后網(wǎng)上各種找方法有一個方法說岩瘦,基本可以解決參考下面的文檔:
http://www.reibang.com/p/90ca71b3b94a
但是按照這個方法試過之后未巫,我的還是不行,這次真的生氣了担钮,各種方法都試了還是不行橱赠,然后偶然不知道在哪個地方看到的也忘了尤仍,輸入pod repo update --verbose命令箫津,然后重新,進行搜索,結(jié)果成功了苏遥,不知道到底是不是因為這句命令饼拍,如果有遇到相似問題的朋友,可以試試田炭。
pod 導(dǎo)入第三方的時候(我這邊導(dǎo)入的事友盟)找不到頭文件
選擇target -> BuildSettings -> search Paths 下的 User Header Search Paths, 添加
${SRCROOT}并將改成recursive
2师抄、tableview在iPhone上顯示正常,在iPad上寬度突然就變斷了教硫,而且非常明顯叨吮。在網(wǎng)上查了一些答案,但能解決比較片面的瞬矩。
ios9后蘋果更新的API中有一個專門設(shè)置cell寬度是否收縮的屬性茶鉴,self.tableview.cellLayoutMarginsFollowReadableWidth = NO;但是iOS9之前就不能用了,現(xiàn)在iOS適配的話一般都還要適配到iOS8景用,所以這是個比較蛋疼的問題涵叮,我這邊的做法是初始化tableview的時候,不要用frame伞插,用自動布局去做割粮,這樣可以直接設(shè)置左邊最右邊,距離多少媚污,我試了一下舀瓢,及時設(shè)置為0的話,效果也是有的不過不是特別明顯耗美,如果要求不是特別嚴(yán)格的話氢伟,也可以這樣做,要不就將左右兩天設(shè)置的在多一點幽歼,并且判斷設(shè)備是否為iPad朵锣。也沒找到什么特別好的方法,如果誰有好的方法的話甸私,可以告訴一聲诚些,這里先謝謝了。
3皇型、xcode控制臺打出的警告
雖然對程序員來說诬烹,只看error,忽視warning弃鸦,但是對一些代碼潔癖的人來說可能就必須要解決了绞吁,在說,從控制臺自動打印出來的警告雖然不會有什么嚴(yán)重的后果唬格,但是誰也不敢保證家破。
在控制臺打印出的警告颜说,對我們來說,有時候根本就找不到在哪汰聋,比如我遇到的一個例子:[Graphics] UIColor created with component values far outside the expected range, Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.
大致一看知道是顏色方便的一個警告门粪,創(chuàng)建UIColor的時候給的參數(shù)溢出,RGB值的范圍是[0,1]烹困,如果給定一個超出這個值的參數(shù)玄妈,就會有這個警告但是一個項目中這么多用到顏色的地方,總不能一個個去找吧髓梅,所以就需要我們用一種比較聰明的方法來找到他拟蜻。
打一個標(biāo)志斷點,設(shè)置斷點標(biāo)志枯饿。
然后run瞭郑,就可以找到那些關(guān)于出現(xiàn)警告的代碼了。
詳情請參考:http://blog.csdn.net/piratest/article/details/52588042
4鸭你、手勢問題屈张,長按手勢和平常用到的點擊手勢不同了。按平常那種寫法袱巨,創(chuàng)建手勢阁谆,將手勢添加到視圖上。到時我這次創(chuàng)建的長安手勢卻出現(xiàn)了下面的情況愉老。
看了一下蘋果的官方文檔场绿,才知道手勢中的numberOfTouchesRequired屬性,這個屬性在其他手勢設(shè)置不設(shè)置好像沒有什么大礙嫉入,但是長安手勢中就不行了焰盗,其他手勢都是一次性操作,長按手勢的話不抬起手指的話一直在響應(yīng)咒林,所以這里我們就要設(shè)置請求次數(shù)了熬拒。
UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(showMypopView:)];
longpress.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:longpress];
而在手勢的方法中要判斷手勢的狀態(tài),手勢狀態(tài)分為六種垫竞,UIGestureRecognizerStateBegan澎粟,UIGestureRecognizerStateChanged,UIGestureRecognizerStateEnded欢瞪,UIGestureRecognizerStateCancelled活烙,UIGestureRecognizerStateFailed,UIGestureRecognizerStateRecognized遣鼓。根據(jù)自己的場景判斷啸盏,然后去執(zhí)行方法,我這邊是從UIGestureRecognizerStateBegan執(zhí)行方法骑祟。
if (longpress.state == UIGestureRecognizerStateBegan) {
[self.myPopview showPopView];
}因此這個bug就解決了回懦。
5气笙、視圖問題(透明度):
彈出一個遮擋視圖,設(shè)置了透明度粉怕,并且在設(shè)個遮擋視圖上添加控件健民,結(jié)果發(fā)現(xiàn)抒巢,添加的這個控件也變得透明了
解決方法:? self.shadeView.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.8];
而不是 self.shadeView.backgroundColor = [[UIColor blackColor]贫贝;self.shadeView.alpha = 0.8;