開發(fā)中遇到的小技巧,大神之路

由身份證號碼返回性別

-(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è)為空即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、禁止手機(jī)睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa閱讀 1,201評論 1 6
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,975評論 1 9
  • { 24、Sqlite數(shù)據(jù)庫 1、存儲大數(shù)據(jù)量,增刪改查,常見管理系統(tǒng):Oracle、MSSQLServer、DB...
    CYC666閱讀 1,047評論 0 1
  • 這是一個80后大叔的故事,大叔心里住下一個人,所以要裝下一個世界給她看。 大叔26歲那年,小瑛因?yàn)楣ぷ鲏毫Υ笤诠ぷ?..
    阿雅克肖Aay閱讀 618評論 0 2
  • 那年18歲,除了年輕青春洋溢的笑臉,一無所有,那時愛上的少年啊,我多惶恐,我該拿什么來愛你。 知道你生活費(fèi)不多,...
    蠟筆小莘閱讀 596評論 0 0

友情鏈接更多精彩內(nèi)容