由身份證號碼返回性別
-(NSString *)sexStrFromIdentityCard:(NSString *)numberStr{ NSString *result = nil; BOOL isAllNumber = YES; if([numberStr length]<17) return result; //**截取第17為性別識別符 NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(16, 1)]; //**檢測是否是數(shù)字; const char *str = [fontNumer UTF8String]; const char *p = str; while (*p!='\0') { if(!(*p>='0'&&*p<='9')) isAllNumber = NO; p++; } if(!isAllNumber) return result; int sexNumber = [fontNumer integerValue]; if(sexNumber%2==1) result = @"男"; ///result = @"M"; else if (sexNumber%2==0) result = @"女"; //result = @"F"; return result;}
2. ?Mac 系統(tǒng)顯示和隱藏文件的終端命令:
如果你實(shí)在想嘗試命令操作,可參考:?
顯示:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏:defaults write com.apple.finder AppleShowAllFiles -bool false
輸完單擊Enter鍵,退出終端,重新啟動Finder就可以了(重啟Finder:鼠標(biāo)單擊窗口左上角的蘋果標(biāo)志–>強(qiáng)制退出–>Finder–>重新啟動)
3.**打印View所有子視圖**
po [[self view]recursiveDescription]
4. 去掉分割線多余15像素
首先在viewDidLoad方法加入以下代碼:
if([self.tableViewrespondsToSelector:@selector(setSeparatorInset:)]) {? ? ? ? [self.tableViewsetSeparatorInset:UIEdgeInsetsZero];? ? }if([self.tableViewrespondsToSelector:@selector(setLayoutMargins:)]) {? ? ? ? ? ? ? ? [self.tableViewsetLayoutMargins:UIEdgeInsetsZero];
}
然后在重寫willDisplayCell方法
- (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath{if([cell respondsToSelector:@selector(setSeparatorInset:)]) {? ? ? ? ? ? ? ? ? ? [cell setSeparatorInset:UIEdgeInsetsZero];? ? ? ? }if([cell respondsToSelector:@selector(setLayoutMargins:)]) {? ? ? ? ? ? ? ? ? ? [cell setLayoutMargins:UIEdgeInsetsZero];? ? ? ? }}
5 . 檢測是否IPad Pro和其它設(shè)備型號
- (BOOL)isIpadPro{??
UIScreen *Screen = [UIScreen mainScreen];? ?
CGFloat width = Screen.nativeBounds.size.width/Screen.nativeScale;?
? CGFloat height = Screen.nativeBounds.size.height/Screen.nativeScale;? ? ?
? ? BOOL isIpad =[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad;?
? BOOL hasIPadProWidth =fabs(width -1024.f) < DBL_EPSILON;? ?
? BOOL hasIPadProHeight =fabs(height -1366.f) < DBL_EPSILON;
returnisIpad && hasIPadProHeight && hasIPadProWidth;}#defineUI_IS_LANDSCAPE ([UIDevice currentDevice].orientation == UIDeviceOrientationLands
6.視圖的生命周期
1、 alloc 創(chuàng)建對象,分配空間??
2、 init (initWithNibName) 初始化對象,初始化數(shù)據(jù)
3、 loadView 從nib載入視圖 ,除非你沒有使用xib文件創(chuàng)建視圖??
4、 viewDidLoad 載入完成,可以進(jìn)行自定義數(shù)據(jù)以及動態(tài)創(chuàng)建其他控件
5、 viewWillAppear視圖將出現(xiàn)在屏幕之前,馬上這個視圖就會被展現(xiàn)在屏幕上了
6、 viewDidAppear 視圖已在屏幕上渲染完成
1、viewWillDisappear 視圖將被從屏幕上移除之前執(zhí)行
2、viewDidDisappear 視圖已經(jīng)被從屏幕上移除,用戶看不到這個視圖了
3、dealloc 視圖被銷毀,此處需要對你在init和viewDidLoad中創(chuàng)建的對象進(jìn)行釋放.viewVillUnload- 當(dāng)內(nèi)存過低,即將釋放時調(diào)用;viewDidUnload-當(dāng)內(nèi)存過低,釋放一些不需要的視圖時調(diào)用。
7.MRC和ARC混編設(shè)置方式
在XCode中targets的build phases選項(xiàng)下CompileSources下選擇 不需要arc編譯的文件雙擊輸入 -fno-objc-arc 即可MRC工程中也可以使用ARC的類,方法如下:在XCode中targets的build phases選項(xiàng)下CompileSources下選擇要使用arc編譯的文件雙擊輸入 -fobjc-arc 即可
8. 把tableview里cell的小對勾的顏色改成別的顏色
tableView.tintColor= [UIColorredColor];
9. 調(diào)整tableview的Cell的separaLine線的位置
tableView.separatorInset = UIEdgeInsetsMake(0,100,0,0);
cell.separatorInset = UIEdgeInsetsMake(0,0,0,0)
cell.layoutMargins = UIEdgeInsetsMake(0,0,0,0)
10.設(shè)置滑動的時候隱藏navigationbar
navigationController.hidesBarsOnSwipe = Yes
11.? 屏幕截圖
// 1. 開啟一個與圖片相關(guān)的圖形上下文UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,NO,0.0);
// 2. 獲取當(dāng)前圖形上下文CGContextRefctx =UIGraphicsGetCurrentContext();
// 3. 獲取需要截取的view的layer[self.view.layerrenderInContext:ctx];
// 4. 從當(dāng)前上下文中獲取圖片UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
// 5. 關(guān)閉圖形上下文UIGraphicsEndImageContext();
// 6. 把圖片保存到相冊UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
12. HTTP 基本狀態(tài)碼
200? OK? ? 請求已成功,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。
300? Multiple Choices? ? 被請求的資源有一系列可供選擇的回饋信息,每個都有自己特定的地址和瀏覽器驅(qū)動的商議信息。用戶或?yàn)g覽器能夠自行選擇一個首選的地址進(jìn)行重定向。
400? Bad Request? ? 由于包含語法錯誤,當(dāng)前請求無法被服務(wù)器理解。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個請求。
404??? Not Found? ? 請求失敗,請求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如服務(wù)器知道情況的話,應(yīng)當(dāng)使用410狀態(tài)碼來告知舊資源因?yàn)槟承﹥?nèi)部的配置機(jī)制問題,已經(jīng)永久的不可用,而且沒有任何可以跳轉(zhuǎn)的地址。404這個狀態(tài)碼被廣泛應(yīng)用于當(dāng)服務(wù)器不想揭示到底為何請求被拒絕或者沒有其他適合的響應(yīng)可用的情況下。
408?? Request Timeout? ? 請求超時??蛻舳藳]有在服務(wù)器預(yù)備等待的時間內(nèi)完成一個請求的發(fā)送??蛻舳丝梢噪S時再次提交這一請求而無需進(jìn)行任何更改。
500??? Internal Server Error? ? 服務(wù)器遇到了一個未曾預(yù)料的狀況,導(dǎo)致了它無法完成對請求的處理。一般來說,這個問題都會在服務(wù)器的程序碼出錯時出現(xiàn)。
13.?設(shè)置按鈕按下時候會發(fā)光
button.showsTouchWhenHighlighted=YES;
14. 去掉導(dǎo)航欄返回按鈕后的文字
[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
15. 跳轉(zhuǎn)到手機(jī)的設(shè)置界面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
16. 關(guān)閉navigationController的滑動返回手勢
self.navigationController.interactivePopGestureRecognizer.enabled=NO;
17.讓Xcode的控制臺支持LLDB類型的打印
打開終端輸入三條命令:?
touch ~/.lldbinit
echo? display? @import UIKit >> ~/.lldbinit
echo? target? stop-hook? add? -o \"target stop-hook disable\" >> ~/.lldbinit
18. 屏幕截圖
// 1. 開啟一個與圖片相關(guān)的圖形上下文UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,NO,0.0);
// 2. 獲取當(dāng)前圖形上下文????? CGContextRefctx =UIGraphicsGetCurrentContext();
// 3. 獲取需要截取的view的layer??????? [self.view.layerrenderInContext:ctx];
// 4. 從當(dāng)前上下文中獲取圖片??????? UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
// 5. 關(guān)閉圖形上下文???? UIGraphicsEndImageContext();
// 6. 把圖片保存到相冊??????? UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
19 . 驗(yàn)證身份證號碼
- (BOOL)checkIdentityCardNo:(NSString*)cardNo{
if(cardNo.length!=18) {
returnNO;? ?
}
NSArray* codeArray=[NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",nil];NSDictionary* checkCodeDic = [NSDictionarydictionaryWithObjects:[NSArrayarrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2",nil]? forKeys:[NSArrayarrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil]];NSScanner* scan = [NSScannerscannerWithString:[cardNo substringToIndex:17]];intval;BOOLisNum = [scan scanInt:&val] && [scan isAtEnd];if(!isNum) {returnNO;? ? }intsumValue =0;for(inti =0; i<17; i++) {? ? ? ? sumValue+=[[cardNo substringWithRange:NSMakeRange(i ,1) ] intValue]* [[codeArray objectAtIndex:i] intValue];? ? }NSString* strlast = [checkCodeDic objectForKey:[NSStringstringWithFormat:@"%d",sumValue%11]];if([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17,1)]uppercaseString]]) {returnYES;? ? }returnNO;
}
20. UITableView隱藏空白部分線條
self.tableView.tableFooterView=? [[UIViewalloc]init];
21.? SEL 和 IMP
SEL: 其實(shí)是對方法的一種包裝,將方法包裝成一個SEL類型的數(shù)據(jù),去尋找對應(yīng)的方法地址,找到方法地址后就可以調(diào)用方法。這些都是運(yùn)行時特性,發(fā)消息就是發(fā)送SEL,然后根據(jù)SEL找到地址,調(diào)用方法。IMP:? 是”implementation”的縮寫,它是objetive-C方法 (method)實(shí)現(xiàn)代碼塊的地址,類似函數(shù)指針,通過它可以 直接訪問任意一個方法。免去發(fā)送消息的代價。
22. iOS去除導(dǎo)航欄和tabbar的1px橫線
其實(shí)這是navigationBar的shadowImage,所以只要設(shè)置它為空即可,但是設(shè)置它為空之前應(yīng)該先設(shè)置它的背景也為空,全部代碼如下:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];? ? ? [self.navigationController.navigationBar setShadowImage:[UIImage new]];//其實(shí)這個線也是image控制的。設(shè)為空即可