1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設置background顏色,可是發(fā)現(xiàn)clear Color無法使用)。
其實在代碼里還是可以設置的,那就是刪除背景view
[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];
2,NSDate:
[注意]在開發(fā)中,如果使用年月日,用NSDateFormatter setFormat :@"yyyy-MM-dd",如果是使用小時和分鐘,設置為:"HH:mm",切記不要設置“HH-mm”,這樣會出錯的。
舉例:
//創(chuàng)建一個時間對象
NSData * date = [NSDate date];
//打印時間
NSLog(@"today is %@",date);
//再獲取的時間date減去24小時的時間(昨天的這個時候)
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];
NSLog(@"yesterday is %@",yesterday);//打印昨天的時間
/*字符串換成時間*/
//設置一個字符串的時間
NSString *datestring = [NSString stringWithFormat:@"1999-09-03"];
//想要設置自己想要的格式,可以用nsdateformatter這個類,這里是初始化
NSDateFormatter * dm = [[NSDateFormatter alloc]init];
//指定輸出的格式? 這里格式必須是和上面定義字符串的格式相同,否則輸出空
[dm setDateFormat:@"yyyy-MM-dd"];
//把字符串的時間轉換成Date對象,用dateFromString方法
NSDate * newdate = [dm dateFromString:datestring];
//輸出
NSLog(@"newdate is %@",newdate);
/*把時間轉換成字符串*/
//把Date對象轉換成String對象? 用stringFromDate方法
NSString * datestring2 = [dm stringFromDate:newdate];
//打印
NSLog(@"datestring2 is %@",datestring2);
3,如果使用 UTTabviewCell,設置其accessory樣式為:Detail Disclosure ,就是在每一個cell右邊設置一個detail button。如果這樣的操作是使用storyboard,進行的,它會要求你給每一個你cell設置indentifier,然后你會在以下方法內(nèi)設置重用indentfier,別忘記加上一句話,否則編譯運行時可能會彈出: cell未實例化
例子看網(wǎng)站上的。
4,在開發(fā)項目中,有時有這樣的需求:運行程序,登陸界面是一個自由的ViewController,只是擺放幾個TextField和button,點擊后跳轉到孩子選擇或其它選擇界面,點擊選項后進入我們的主界面:這個時候,在登陸界面作跳轉時,會有好多的方法,如果使用storyboard,就比較方便了,設置一個segue,跳轉代碼中:代碼看網(wǎng)站上的
[self PerformSegueWithIdentifier:@"targetViewController",self]; 就可以了,可是我想實例化想要跳轉的控制器,然后設置某一屬性的值,這樣跳轉后控制器獲取那個屬性,就會得到值了,可是這樣做會有一個問題:
主界面控制器如果使用了navigatorViewController,并且是其RootViewController,等到在主界面設置功能,點擊某一功能,想push到一個新頁面時,問題就來了,你會發(fā)現(xiàn)毫無反應,沒有報錯,只是segue無法跳轉。后來終于找到原因:就是我在登陸控制器跳轉時沒有使用segue的方法,而是用代碼self.storyboard,加載一個新類,具體原理目前還沒有搞明白,先把出問題的代碼記錄下來,回頭補之:看網(wǎng)站上的
代碼這樣做,會導致其后無法使用navigatorViewController做push跳轉
5,(1010更新)開發(fā)過程中,我們通過http請求,后臺返回json數(shù)據(jù),而有時數(shù)據(jù)里某一字段的值為null~,然后我們把此值賦值給NSArray,NSdictionary,或是NSString,然后我們會判斷此值為null時,所做的處理,而通常慣性思維判斷時我們都會寫:if(dict == nil)或是if(dict == Nil)或是if(dict == NULL)再或是if(dict isEqual nil),我們發(fā)現(xiàn),都不好用,根本沒有起到判斷的作用~后來我才發(fā)現(xiàn),原來不能這樣來判斷。
6,給uiview設置圓角樣式只需在加載時,添加這樣的話就可以了:testView.layer.cornerRadius = 6;? ? ? ? testView.layer.masksToBounds = YES;注意,需要 import導入,否則,不能識別cornerRadius和masksToBounds。
uiview設置背景圖片:
[theMainView setBackgroundColor: [UIColor colorWithPatternImage: [UIImage imageNamed: @"bg.png"]]];
imageName 緩存,下面方法不緩存
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"default" ofType:@"jpeg"];
UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:thePath"];
controller.productImg.image = prodImg;
[prodImg release];
7,隱藏鍵盤的兩種方法
1-1Did End On Exit 調(diào)用下面事件當點擊鍵盤return得時候就會隱藏鍵盤
- (IBAction)textFieldShouldReturn:(UITextField *)textField {
//[sender resignFirstResponder];
if (textField == chi) {
[chi resignFirstResponder];
double m=[chi.textdoubleValue]/3.003;
double f=m *3.2808;
meter.text=[[NSStringalloc] initWithFormat:@"%.4f",m];
feet.text=[[NSStringalloc] initWithFormat:@"%.4f",f];
}
if (textField == meter) {
[meter resignFirstResponder];
}
if (textField == feet) {
[feet resignFirstResponder];
}
}
1-2 點擊屏幕得時候隱藏鍵盤
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=[[event allTouches] anyObject];
if (touch.tapCount >=1) {
[chi resignFirstResponder];
[meter resignFirstResponder];
[feet resignFirstResponder];
}
}
1-2的方法相當于屏幕任何位置的點擊事件(除了各組件的點擊處)可以在這個方法里執(zhí)行要隱藏或remove的view。
8,UITextField密文顯示輸入內(nèi)容
9,通過系統(tǒng)自帶的NSPredicate使用正則表達式。(在TextField中)
[java] view plaincopy
NSString *regex =[NSString stringWithFormat:@"^1(3[4-9]|5[012789]|8[2378]|47)\\d{8}$"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
BOOL isMatch = [predicate evaluateWithObject:editPhoneField.text];
10,項目設置應用程序顯示名稱:
11更改Xcode的缺省公司名
12,在有uinavigation,uitoolbar的情況下,如何添加一個全屏的 uiview (一般是作為顯示一個進度框,任何區(qū)域無法觸摸而使用)
只需要在要添加view時侯這樣寫:
[java] view plaincopy
[[UIApplication sharedApplication].keyWindow addSubview:waitingview];
這樣,直接把waitingview添加到了uiWindow上,而不是self.view上。再次運行,會發(fā)現(xiàn)屏幕全部區(qū)域都已經(jīng)遮擋住了。
13,使用了storyboard,運行程序模擬器顯示黑屏,這是由于,操作不當,獲取點擊了例如? navigationViewController屬性種的in init ViewController選項,然后重置了當前進入程序后的首界面,解決辦法就是選擇入口界面,屬性種重新勾選此選項。
14,如何給uiNavigationBar 設置背景顏色或是自定義圖片?
在項目中添加如下代碼:
//設置背景顏色:
[java] view plaincopy
UIColor *itemcolor = [UIColor colorWithRed:100.0f/255.0f green:176.0f/255.0f blue:0.0f/255.0f alpha:0.3f];
self.navigationController.navigationBar.tintColor = itemcolor;
//設置自定義的圖片:
[java] view plaincopy
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbg.png"] forBarMetrics:UIBarMetricsDefault];
5.0以上,api有了上面setBackgroundImage的方法,可以直接設置,如果項目需要適配5.0以下版本的設備,最好加一個判讀,是否有此函數(shù),有則設置,沒有就通過drawRect方法設置。
另外:設置背景圖片無法匹配backButton或rightButtonItem,所以返回按鈕或右邊自定義的Bar button Item需要自行處理。
15,如何給uiview設置背景圖片?
在storyboard或xib中,添加一個uiview,屬性設置欄一般都有設置背景顏色,樣式,透明度alpha,但是沒有提供設置image,只有在imageview中才有,所以,要想設置背景圖片,只能在代碼中設置,如下:
[java] view plaincopy
[leftNaviView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"pabb_leftnaviview_bg.png"]]];
這樣,背景就可以變成想要的圖片了。另外,設置大小:
[java] view plaincopy
[leftNaviView setFrame:CGRectMake(9, 60, 120, 250)];
16如何在項目用代碼打開AppStore軟件(也就是訪問appstore)
//以下是通過id打開此軟件的評價
//? ? ? ? int m_appleID = 576337094;
//? ? ? ? NSString *str = [NSString stringWithFormat:
//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d",
//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? m_appleID ];
//以下是通過appstore鏈接到自己應用在商店的位置
NSString *url = [NSString stringWithFormat:@"http://itunes.apple.com/cn/app/huo-xing-she-xin-dian/id549425594?l=en&mt=8"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
把以上代碼直接拷貝到想要實現(xiàn)點擊跳轉的操作方法內(nèi)就可以了,通過appID,隨意可以通過appstore打開應用,直接用url就可以鏈接到了。很簡單,一般都用在檢查更新的時候。
17,如何代碼實現(xiàn)點擊http://www.kaka.com或400-800-400或message實現(xiàn)跳轉safari,phone或message?
只需要在相應的代碼中寫入:
1、調(diào)用 電話phone
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];
2、調(diào)用自帶 瀏覽器 safari
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];
3、調(diào)用 自帶mail
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];
4、調(diào)用 SMS
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];
5,跳轉到系統(tǒng)設置相關界面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
其中,發(fā)短信,發(fā)Email的功能只能填寫要發(fā)送的地址或號碼,無法初始化發(fā)送內(nèi)容,如果想實現(xiàn)內(nèi)容的話,還需要更復雜一些,實現(xiàn)其各自的委托方法。
若需要傳遞內(nèi)容可以做如下操作:
加入:MessageUI.framework
代碼看網(wǎng)站上的。
18,注冊設置應用程序訪問用戶手機發(fā)送推送消息,(彈出Alertview)
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
19,輕松自定義復選框按鈕
-(void)checkboxClick:(UIButton *)btn
{
btn.selected = !btn.selected;
}
- (void)viewDidLoad {
UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect checkboxRect = CGRectMake(135,150,36,36);
[checkbox setFrame:checkboxRect];
[checkbox setImage:[UIImage imageNamed:@"checkbox_off.png"] forState:UIControlStateNormal];
[checkbox setImage:[UIImage imageNamed:@"checkbox_on.png"] forState:UIControlStateSelected];
[checkbox addTarget:self action:@selector(checkboxClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:checkbox];
}
20,程序中獲取軟件的版本號和app名稱
21,如何使屏幕一直保持喚醒狀態(tài)?(就是不自動黑屏)
比如,如果我們做一個播放視頻的功能時,想在播放的時候,不會自動進入屏保(黑屏)
只要在代碼里加入這一行:
[java] view plaincopy
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
當然,在想要黑屏的時候還需要把它設置為NO(比如視頻播放完畢時),不然屏幕會在此軟件運行下一直亮著。
22,一直以來的疑問:在Xcode中,有時候在類名稱后邊帶有M或C等標示,不知道為何意。如下圖所示:
23,有關ios上屏幕旋轉,view設置Frame的相關問題(ios5)。
24,Xcode編譯警告和錯誤解決方法:
25,如何設置視圖(view)在最上層?或是view1和view2交換?
26,如何隱藏UINavigationBar
27,如何限制UITextField輸入長度(監(jiān)聽textField文本變化的事件)
28,使用ios5.0以后的一個方法自定義table View Cell
29,iOS和iPad各app圖標和啟動頁尺寸。
iphone APP圖標尺寸:57X57? ? 高清:114X114? 單位:pixel? 命名:無特殊要求,最好是,app_icon? 高清的要加@2x
iphone 啟動頁尺寸:大小最好是320X460或320X480(相當于整個屏幕尺寸) 單位:pixel 命名:Default.png
iPad APP圖標尺寸:72X72 高清:144X144? 單位:pixel 命名:
ipad 啟動頁尺寸:大小最好是768X1004或768X1024? 單位:pixel 命名:Default-Portrait~ipad.png? 高清:Default-Portrait@2x~ipad.png
30,如何用NSLog輸出NSRange,CGRect等結構體。
NSString 中的方法:
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
如:NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
31,如何在navigationviewcontroller中,pop到之前不同的viewcontroller(push過的viewcontroller)
32,self.navigationItem.backBarButtonItem 的title設置
33,self.navigationItem和self.navigationController.navigationItem的區(qū)別
1,? 不要混淆 self.navigationItem? 和 self.navigationController.navigationItem ,
UINavigationItem 本身是用來 定制 ViewController自己在被導航過程中的 appearence, navigationItem是UIViewController類關于UINavigationControllerItem類別的擴展:
@interface UIViewController (UINavigationControllerItem)
@property(nonatomic,readonly,retain)UINavigationItem * navigationItem;
...
@end
所以后者 是調(diào)用 VC的所在的導航控制器導航控制器自己自己作為VC的 navigationItem,是導航的疊加。
2. UINavigationBar 繼承于 UIView,隸屬于整個 UINavigationController ,用來定義整個導航過程中的導航欄的顏色等其他數(shù)值,(類似于 self.tabBarController.tabBar? UINavigationBar ,只需要一個設置通用的基本屬性),只能通過self.navigationController.navigationBar來訪問。
亦因此,定制于導航堆棧里某個VC 的時候,一般通過self.navigationItem,? 比如常用的self.navigationItem.leftBarButtonItem,self.navigationItem.rightButtonItem, 同時如果自己來定制導航欄的外觀的話,就要用到self.navigationItem.titleView,這個可以直接用一個 CustomView 賦值于self.navigationItem.titleView即可。
此時,如果需要,就得自己畫導航過程中的返回按鈕了。
34,圖片模糊化處理
+(UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
35,NSString轉換大小寫的用法
iOS 6中NSString對象有些新的使用方法,可以讓字符串轉變成全部大寫,全部小寫,或者每個單詞首字母大寫。
NSString *str = @"mobile developer tips";
// Convert string to uppercase
NSString *upperStr = [str uppercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"upperStr: %@", upperStr);
// Convert string to caps
NSString *capStr = [upperStr capitalizedStringWithLocale:[NSLocale currentLocale]];
NSLog(@"capStr: %@", capStr);
// Convert string to lowercase
NSString *lowerStr = [capStr lowercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"lowerStr: %@", lowerStr);
運行結果:看網(wǎng)站上。
36,如何獲取手機硬件信息?
通過使用UIDevice:
[[UIDevice currentDevice] systemName];
[[UIDevice currentDevice] systemVersion];//os version
[[UIDevice currentDevice] uniqueIdentifier];
[[UIDevice currentDevice] model];
[[UIDevice currentDevice] name];
真機上結果:
System Name: iPhone OS
System Version: 4.2.1
Unique ID: 9b5ded78d5fa0ac96250f8b4af0e46f40b96ea6d
Model: iPhone
Name: “wwk”的 iPhone
模擬器上結果:
System Name: iPhone OS
System Version: 4.2
Unique ID: 21FFE0FF-429B-5D0B-96D2-EADCA3203260
Model: iPhone Simulator
Name: iPhone Simulator
uniqueIdentifier:iPhone通過,向幾個硬件標識符和設備序列號應用內(nèi)部散列算法,而生成這一標識符。
http://blog.csdn.net/qiwancong/article/details/7914923 參考
36,真機調(diào)試:could not change executable permissions錯誤?
雖然更改了新demo的bundle identifier和之前的identifier一樣,但是真機上還保留著之前調(diào)試時的demo,所以新的工程如果使用同樣的identifier真機調(diào)試,需要先把機器上原來的demo刪除,再使用新工程調(diào)試。
37,判斷iphone5屏幕的宏定義
38、invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later)錯誤
39,如何調(diào)用系統(tǒng)聲音?【iphone 調(diào)用系統(tǒng)鈴聲與震動功能】
40,重復調(diào)用2次loadView和viewDidLoad
41,點擊UIButton 無法產(chǎn)生觸摸事件
如果在UIImageView中添加了一個按鈕,你會發(fā)現(xiàn)在默認情況下這個按鈕是無法被點擊的,需要設置UIImageView的userInteractionEnabled為YES:
imageView.userInteractionEnabled = YES;
設置為YES后,UIImageView內(nèi)部的按鈕就可以被點擊了
42,如何啟動app時全屏顯示Default.png(圖片)
42,使用ASIHTTPRequest保存cookies
假如我的APP,第一次啟動請求了登錄接口并得到了Cookie,然后我把APP關了,下次啟動APP,我不請求登錄接口了,那上次得到的Cookie就不存在了。如果需要,那么2種方法,下次啟動app,自動登入,這樣能得到服務器分配給你的cookier(這一種是最好的,因為session也會過期),還有一種是你把上次登入的時候,拿到的cookier存起來,然后下次啟動app的時候,手動給請求(ASIHTTP)添加cookie。
43,UITextField只有當有字符輸入后,鍵盤右下角的搜索/返回/done/等等鍵才可以使用
TextField設置這個屬性為YES就可以了,默認為NO
searchField.enablesReturnKeyAutomatically = YES;
44、判斷是不是iPhone5