1、設定 imagepicker 的大小
imagepicker 在 popover controller 總是以預設大小顯示,設定 popovercontentsize 屬性似乎無用。解決辦法是將imagepicker 「包含」到乙個定製的 viewcontroller 中,然後再 presentpopover 這個 viewcontroller :
uiviewcontroller *containercontroller = [[uiviewcontroller alloc] init];
containercontroller.contentsizeforviewinpopover = cgsizemake(600,self.view.frame.size.height);
[containercontroller.viewaddsubview:_imagepicker.view];
_popcontroller= [[uipopovercontroller alloc] initwithcontentviewcontroller:containercontroller];
cgpoint p=[self.view convertpoint:button.center
fromview:sender.superview];
[_popcontroller presentpopoverfromrect:(cgrect)
inview:self.view
permittedarrowdirections:uipopoverarrowdirectionany
animated:yes];
[_imagepicker.view setframe:containercontroller.view.frame];// 很重要
注意,popover的寬度最多600。此外,_imagepicker 每次 presentpopoverfromrect 之前都必須 init一次,否則顯示位置不正確。
2、上傳檔案中文檔名亂碼問題
在ios客戶端將檔名用url encode編碼,然後在服務端用url decode解碼。
客戶端:
nsstringencodingenc=nsutf8stringencoding;
[request setdata:datawithfilename [filename stringbyaddingpercentescapesusingencoding:enc]
服務端:
string filename=request.getparameter(「upload_file」);
filename=urldecode.decode(s,」utf-8」);
3、mac 64 bit device
有時從svn更新工程後,scheme會顯示為mac 64 bit device,並且不允許執行程式。這時只需要重新設定一下target的deploymenttarget就好(設定為模擬器或除錯裝置)。
4、去除除錯程式的nslog
編譯引數optimize level根據不同的版本設定。例如對於debug版本是none,對於release版本是fastest,smallest。這樣,我們可以根據這個引數來重新定義nslog函式:
#ifndef __optimize__
#define nslog(...)nslog(__va_args__)
#else
#define nslog(...) {}
#endif
5、警告:no previous prototye for function
根據c規範, 如果函式沒有引數,使用void作為函式引數。
函式宣告應使用 「void functiona(void);」,而不能是」void functiona();」.
6、陣列排序
方法一:
- (nscomparisonresult)compare:(person *)otherobject {
return [self.birthdatecompare:otherobject.birthdate];
nsarray *sortedarray;
sortedarray = [drinkdetails sortedarrayusingselector:@selector(compare:)];
方法二:
nssortdescriptor *sortdescriptor;
sortdescriptor = [[[nssortdescriptor alloc]initwithkey:@"birthdate"
ascending:yes] autorelease];
nsarray *sortdescriptors = [nsarray arraywithobject:sortdescriptor];
nsarray *sortedarray;
sortedarray = [drinkdetails sortedarrayusingdescriptors:sortdescriptors];
方法三( 10.6+):
nsarray *sortedarray;
sortedarray = [drinkdetails sortedarrayusingcomparator:^(id a, id b) {
nsdate *first =[(person*)a birthdate];
nsdate *second =[(person*)b birthdate];
return [firstcompare:second];
7、xcode 4的build目錄在**?
8、警告:no rule to process file
xcode試圖偵測每一種檔案的型別。當它認為檔案屬於「原始檔」型別(比如.js檔案),總是試圖將它加到compile sources中並試圖編譯。解決這個警告的辦法是,把這類檔案從build phases的 compile sources移到 copy bundle resources中。
9、警告:'initwithframe:reuseidentifier:'is deprecated
該方法在後續版本中將被拋棄。請使用
-initwithstyle:reuseidentifier:
10、itms-services不工作
如果你處於intranet中,請檢查是否可訪問上述位址。如果不能,你將無法使用ota來安裝應用程式。要求ios 4.0以上。
iOS開發之UITableView優化問題
你會對tableview的層次結構和用法有詳細的認識。不得不說的tableview中cell復用原理 檢視內部維護了乙個cell的復用佇列,每次需要新的cell時,可以先從佇列中根據復用標識尋找是否有空閒的cell,若有則直接出列使用無需建立新的 若沒有可用cell則需要建立新的。檢視上的cell離...
iOS開發技巧(1)
這個系列的文章只是簡單地把開發過程中的一些技巧總結起來,方便以後查閱。exclusivetouch是uiview的乙個屬性。exclusive是 獨家 的意思,所以這個方法的作用就是把某個uiview的觸碰事件設定為獨家事件,即如果多個設定了exclusivetouch的uiview被同時點選,則只...
iOS 開發 WKWebView快取處理的問題
wkwebview使用中遇到的問題 1.關於快取的問題 因為使用了wkwebview,後端的策劃人員換圖,ios端沒有更新,然後google了好久,最終算是解決了這個問題。首先,載入第乙個頁面。urlstr 設定快取的請求策略和超時時間 nsurlrequest urlreuqest nsurlre...