http://blog.csdn.net/u012338816/article/details/50834736
50.禁止橫屏方法
- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window? {returnUIInterfaceOrientationMaskPortrait;? }
49.一行代碼解決改變展位圖文本顏色代碼
[_userName setValue:[UIColor whiteColor]forKeyPath:@"_placeholderLabel.textColor"];
48.修改狀態(tài)欄顏色
iOS7默認狀態(tài)欄文字顏色為黑色误证,項目需要修改為白色。
1在Info.plist中設置UIViewControllerBasedStatusBarAppearance為NO2 在需要改變狀態(tài)欄顏色的AppDelegate中在didFinishLaunchingWithOptions方法中增加:[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];如果需要在單個ViewController中添加,在ViewDidLoad方法中增加:[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
屏幕快照 2016-01-24 下午8.14.40.png
47.判斷程序是否第一次啟動
if(![[NSUserDefaultsstandardUserDefaults] boolForKey:@"firstLaunch"]){? ? ? ? [[NSUserDefaultsstandardUserDefaults] setBool:YESforKey:@"firstLaunch"];NSLog(@"第一次啟動");? ? ? ? [[NSUserDefaultsstandardUserDefaults] setBool:NOforKey:@"isLogin"];? ? }else{NSLog(@"已經(jīng)不是第一次啟動了");? ? }
46.iPhone尺寸規(guī)格
iPhone尺寸規(guī)格.png
45.模糊效果
// 模糊效果//? ? UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];//? ? UIVisualEffectView *test = [[UIVisualEffectView alloc] initWithEffect:effect];//? ? test.frame = self.view.bounds;//? ? test.alpha = 0.5;//? ? [self.view addSubview:test];
44.block傳值
block回調進行傳值操作? 首先思考你的值在什么地方(哪個控制器)A誰需要這個值 B一般block都是從后往前傳值即(A對象先初始化 在A對象的生命周期中因為某些情況 需要B對象提供一個參數(shù),那我們是在A的實現(xiàn)中初始化了B對象 A對象就可以獲取到B對象 那就意味著可以將B對象的block.實現(xiàn)在A的肚子里 B對象可以獲取到參數(shù),獲取到參數(shù)之后調用自己的block,就相當于方法調用,因為這個block實現(xiàn)在A中,所以系統(tǒng)會回到A的肚子里執(zhí)行block的實現(xiàn));示例A控制器中的一個按鈕方法-(void)buttonAction{//初始化一個B控制器B *bVC = [B new];//實現(xiàn)B控制器的blockbVC.block= ^(參數(shù)類型? *參數(shù)名稱){? ? ? nslog:(@“這是block的實現(xiàn)? ? 獲取到參數(shù)%@”,參數(shù)名稱);? };}B控制器中請求數(shù)據(jù)的方法-(void)requestData{//獲取到數(shù)據(jù)后調用自己的block并傳入?yún)?shù)self.block(參數(shù)) ;? ? 調用block的時候系統(tǒng)回去尋找這個block的實現(xiàn) 無論它在哪里實現(xiàn)都會執(zhí)行 如果沒有實現(xiàn)會導致奔潰 所以我們一般會加個if判斷一下是否實現(xiàn)了block}
43.添加每個cell出現(xiàn)時的3D動畫
-(void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath{// 動畫1//? ? CATransform3D rotation;//3D旋轉//? ? rotation = CATransform3DMakeRotation( (90.0*M_PI)/180, 0.0, 0.7, 0.4);//? ? //逆時針旋轉//? ? rotation.m34 = 1.0/ -600;////? ? cell.layer.shadowColor = [[UIColor blackColor]CGColor];//? ? cell.layer.shadowOffset = CGSizeMake(10, 10);//? ? cell.alpha = 0;////? ? cell.layer.transform = rotation;////? ? [UIView beginAnimations:@"rotation" context:NULL];//? ? //旋轉時間//? ? [UIView setAnimationDuration:0.8];//? ? cell.layer.transform = CATransform3DIdentity;//? ? cell.alpha = 1;//? ? cell.layer.shadowOffset = CGSizeMake(0, 0);//? ? [UIView commitAnimations];// 動畫2cell.alpha=0.5;CGAffineTransformtransformScale =CGAffineTransformMakeScale(0.3,0.8);CGAffineTransformtransformTranslate =CGAffineTransformMakeTranslation(0.5,0.6);? ? cell.transform=CGAffineTransformConcat(transformScale, transformTranslate);? ? [tableView bringSubviewToFront:cell];? ? [UIViewanimateWithDuration:.4f? ? ? ? ? ? ? ? ? ? ? ? ? delay:0options:UIViewAnimationOptionAllowUserInteractionanimations:^{? ? ? ? ? ? ? ? ? ? ? ? cell.alpha=1;//清空 transformcell.transform=CGAffineTransformIdentity;? ? ? ? ? ? ? ? ? ? } completion:nil];// 動畫3/*
? ? // 從錨點位置出發(fā),逆時針繞 Y 和 Z 坐標軸旋轉90度
? ? CATransform3D transform3D = CATransform3DMakeRotation(M_PI_2, 0.0, 1.0, 1.0);
? ? // 定義 cell 的初始狀態(tài)
? ? cell.alpha = 0.0;
? ? cell.layer.transform = transform3D;
? ? cell.layer.anchorPoint = CGPointMake(0.0, 0.5); // 設置錨點位置;默認為中心點(0.5, 0.5)
? ? // 定義 cell 的最終狀態(tài)亿驾,執(zhí)行動畫效果
? ? // 方式一:普通操作設置動畫
? ? [UIView beginAnimations:@"transform" context:NULL];
? ? [UIView setAnimationDuration:0.5];
? ? cell.alpha = 1.0;
? ? cell.layer.transform = CATransform3DIdentity;
? ? CGRect rect = cell.frame;
? ? rect.origin.x = 0.0;
? ? cell.frame = rect;
? ? [UIView commitAnimations];
? ? // 方式二:代碼塊設置動畫
? ? //? ? ? ? [UIView animateWithDuration:0.5 animations:^{
? ? //? ? ? ? ? ? ? ? cell.alpha = 1.0;
? ? //? ? ? ? ? ? ? ? cell.layer.transform = CATransform3DIdentity;
? ? //? ? ? ? ? ? ? ? CGRect rect = cell.frame;
? ? //? ? ? ? ? ? ? ? rect.origin.x = 0.0;
? ? //? ? ? ? ? ? cell.frame = rect;
? ? //? ? ? ? ? ? }];
? ? */}
42.強制橫屏代碼
#pragma mark - 強制橫屏代碼- (BOOL)shouldAutorotate{//是否支持轉屏returnNO;}- (UIInterfaceOrientationMask)supportedInterfaceOrientations{//支持哪些轉屏方向returnUIInterfaceOrientationMaskLandscape;}- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{returnUIInterfaceOrientationLandscapeRight;}- (BOOL)prefersStatusBarHidden{returnNO;}
41.將window上的顯示在最外層
[[[[UIApplication sharedApplication]delegate]window]addSubview:topImgView];
40.監(jiān)測網(wǎng)絡狀態(tài)
只要網(wǎng)絡狀態(tài)發(fā)生了變化,在任何一個視圖控制器都會給出相應的提示
說明: 這里需要導入第三方庫,1. MBProgressHUD 2. AFNetworking
導入頭文件 MBProgressHUD.h, AFNetworking.h
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {// 應用程序加載完成UIWindow*window = ((AppDelegate *) [UIApplicationsharedApplication].delegate).window;? ? AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];? ? [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {// 使用MBProgressHUD三方庫創(chuàng)建彈框诱贿,給出相應的提示MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:window animated:YES];? ? ? ? hud.mode= MBProgressHUDModeText;switch(status) {caseAFNetworkReachabilityStatusNotReachable:// 彈框提示的內容hud.labelText=@"世界上最遙遠的距離就是沒網(wǎng)";break;caseAFNetworkReachabilityStatusReachableViaWWAN:? ? ? ? ? ? ? ? hud.labelText=@"2G/3G/4G";break;caseAFNetworkReachabilityStatusReachableViaWiFi:? ? ? ? ? ? ? ? hud.labelText=@"WiFi在線";default:break;? ? ? ? }dispatch_async(dispatch_get_global_queue(0,0), ^{// 顯示時間2ssleep(2);dispatch_async(dispatch_get_main_queue(), ^{// 讓彈框消失[MBProgressHUD hideHUDForView:window animated:YES];? ? ? ? ? ? });? ? ? ? });? ? }];? ? [manager startMonitoring];returnYES;}
另一種:
利用AFNetworking實時檢測網(wǎng)絡連接狀態(tài).png
39.在狀態(tài)欄顯示有網(wǎng)絡請求的提示器
//- (void)webViewDidStartLoad:(UIWebView *)webView {//? ? [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;//}//- (void)webViewDidFishLoad:(UIWebView *)webView {//? ? [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;//}//接收響應// 在狀態(tài)欄顯示有網(wǎng)絡請求的提示器//- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{//? ? //? ? //網(wǎng)絡活動指示器//? ? //? ? [UIApplication sharedApplication].networkActivityIndicatorVisible=YES;//? ? //}//隱藏狀態(tài)欄//- (BOOL)prefersStatusBarHidden////{//? ? //? ? return YES;//? ? //}
38.模糊效果
// 模糊效果UIBlurEffect*effect = [UIBlurEffecteffectWithStyle:UIBlurEffectStyleLight];UIVisualEffectView*test = [[UIVisualEffectViewalloc] initWithEffect:effect];? ? test.frame=self.view.bounds;? ? test.alpha=0.5;? ? [self.viewaddSubview:test];
37.全局斷點+僵尸模式 排錯
屏幕快照 2016-01-18 下午2.36.06.png
36.導入框架方法
QQ20160113-2.png
35.相對路徑
$(SRCROOT)/
34.在storyboard上添加ScrollView
XV~111@6GL_8$J_E7]9M(7C.jpg
33.圖片緩存的基本代碼,就是這么簡單
[imageViewsd_setImageWithURL:[NSURLURLWithString:self.titleImageArray[i]]];
32.返回cell高度
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {NSString*string =self.lrcArr[indexPath.row];CGRectframe = [string boundingRectWithSize:CGSizeMake([UIScreenmainScreen].bounds.size.width,10000) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:[NSDictionarydictionaryWithObject:[UIFontsystemFontOfSize:17] forKey:NSFontAttributeName] context:nil];returnframe.size.height;}
31. UIImageView
NSArray *animationImages; // 把圖片賦值給動畫數(shù)組【幀動畫】
NSInteger animationRepeatCount; // 默認是0咕缎,無限循環(huán)
NSTimeInterval animationDuration; // 執(zhí)行一輪圖片的時間
30. UIImage
UIImageimage = [UIImage imageNamed:@“ha.jpg”];
【特別注意】imageNamed:帶有緩存珠十,通過imageNamed創(chuàng)建的圖片會放到緩存中
UIImage
image = [UIImage imageWithContentsOfFile:path];
【特別注意】imageWithContentsOfFile:不帶緩存,所以圖片量比較大得時候凭豪,用這個方法
延遲(時間參數(shù))執(zhí)行(clearImages)方法
[self performSelector:@selector(clearImages) withObject:nil afterDelay:(延遲多長時間參數(shù))];
29. xib的本質是xml文件
xib編譯之后生成的是nib文件
28. 什么時候用宏焙蹭,什么時候用變量(宏和變量都方便修改參數(shù)值)
如果在一個方法里面的時候,用變量
如果在多個方法里面嫂伞,或者多個類中孔厉,用宏
27. 懶加載里面的判斷條件(含義)
!_imageView 等同于 _imageView == nil
_imageView 等同于 _imageView != nil
26.視圖是否自動(只是把第一個自動)向下挪64
self.automaticallyAdjustsScrollViewInsets = NO; // 不讓系統(tǒng)幫咱們把scrollView及其子類的視圖向下調整64
25.問題處理:有時候self是加在parentViewController(父ViewController)上的,self上面是沒有navigationController的帖努,但是這時還想使用self父類的navigationController撰豺,那么,此時需要第二種方法push過去
[self.navigationController pushViewController:detailViewController animated:YES];
[self.parentViewController.navigationController pushViewController:detailViewController animated:YES];
24.問題處理:cell是有重用機制的拼余,但有時候郑趁,我們的cell是自適應高度,但是所有cell的標識都是一個姿搜,那么寡润,在重用的時候會出現(xiàn) 有的單元格高捆憎,有的單元格矮的情況,和本身想要的frame不匹配梭纹,這個時候躲惰,只需要給cell上面的視圖在懶加載的時候,重新賦frame值就好了变抽。也就是在if判斷外础拨,再賦值一次frame。(例如绍载,豆瓣項目電影院列表)
23. 容器視圖控制器
把一個視圖控制器作為容器視圖控制器诡宗,在這個容器視圖控制器上添加多個其他視圖控制器,并把其他控制器的視圖添加上來
TableViewController *tableViewController = [[TableViewController alloc] init];
[self addChildViewController:tableViewController]; // self在這里就是容器視圖控制器
[self.view addSubView:tableViewController.tableView];
使用場景:當我們某個視圖控制器要使用多個子界面击儡,并且多個子界面的處理事務的邏輯比較復雜塔沃,我們就可以通過這種方式將不同的邏輯處理拆分開,在各自的視圖控制器中處理自己的邏輯阳谍,而不是所有邏輯都在當前視圖控制器中處理蛀柴。
22. 程序的退出【了解】
【特別注意】iOS的應用程序在應用程序內部是不允許被退出的,只能通過連擊兩次HOME鍵的時候進入程序管理界面 通過上滑退出矫夯。如果在應用程序中寫了下面的代碼鸽疾,那么在提交程序的時候是不能被審核通過的。所以下面的代碼是不允許寫的训貌。在這里只是作了解制肮。
exit(0); // 只要執(zhí)行這個語句,程序就會直接退出
21. 隱藏手機的狀態(tài)欄
-(BOOL)prefersStatusBarHidden {
return YES;
}
20. 代理的安全保護【斷是否有代理递沪,和代理是否執(zhí)行了代理方法】
if (self.delegate && [self.delegate respondsToSelector:@selector(passValueWithArray:)]) {
}
19.按照文字計算高度
- (void)descHeightWithDesc:(NSString*)desc{CGRectrect = [desc boundingRectWithSize:CGSizeMake(240, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:@{NSFontAttributeName:self.descLabel.font} context:nil];//按照文字計算高度floattextHeight = rect.size.height;CGRectframe =self.descLabel.frame;? ? frame.size.height= textHeight;self.descLabel.frame= frame;}
18.網(wǎng)絡請求圖片
//? ? NSURL *url = [NSURL URLWithString:urlString];//? ? NSURLRequest *request = [NSURLRequest requestWithURL:url];//? ? NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];//? ? UIImage *image = [UIImage imageWithData:data];//此種寫法和上面的操作是一致的豺鼻,都是同步請求數(shù)據(jù)。UIImage*image = [UIImageimageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:urlString]]];returnimage;
17.substringWithRange: 專門截取字符串的一塊肉
NSMakeRange(4,2) 從第4個字符開始截取区拳,長度為2個字符拘领,(字符串都是從第0個字符開始數(shù)的哦~R馀摇)
self.begin_time= dic[@"begin_time"];self.end_time= dic[@"end_time"];NSRangerange =NSMakeRange(5,11);self.time= [[self.begin_timesubstringWithRange:range] stringByAppendingString:[@" -- "stringByAppendingString:[self.end_timesubstringWithRange:range]]];
16.iOS9中新增App Transport Security(簡稱ATS)特性
主要使用到原來請求的時候用到的HTTP樱调,都轉向TLS1.2協(xié)議進行傳輸。這也意味著所有的HTTP協(xié)議都強制使用了HTTPS協(xié)議進行傳輸届良。
工程導入.png
15.導入Xcode空模板
只需要把你下載好的空模板拷貝到該路徑下即可.
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
14. 在ARC工程中導入MRC的類和在MRC工程中導入ARC的類
// 在ARC工程中導入MRC的類? 我們選中工程->選中targets中的工程,然后選中Build Phases->在導入的類后邊加入標記 -? fno-objc-arc// 在MRC工程中導入ARC的類 路徑與上面一致,在該類后面加上標記 -fobjc-arc
13.UITextField的字數(shù)限制
// viewDidLoad中[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)? ? ? ? ? name:@"UITextFieldTextDidChangeNotification"object:myTextField];
-(void)textFiledEditChanged:(NSNotification*)obj{UITextField*textField = (UITextField*)obj.object;NSString*toBeString = textField.text;//獲取高亮部分UITextRange*selectedRange = [textField markedTextRange];UITextPosition*position = [textField positionFromPosition:selectedRange.startoffset:0];// 沒有高亮選擇的字笆凌,則對已輸入的文字進行字數(shù)統(tǒng)計和限制if(!position)? ? {if(toBeString.length> MAX_STARWORDS_LENGTH)? ? ? ? {NSRangerangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];if(rangeIndex.length==1)? ? ? ? ? ? {? ? ? ? ? ? ? ? textField.text= [toBeString substringToIndex:MAX_STARWORDS_LENGTH];? ? ? ? ? ? }else{NSRangerangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];? ? ? ? ? ? ? ? textField.text= [toBeString substringWithRange:rangeRange];? ? ? ? ? ? }? ? ? ? }? ? } }
12.處理標簽字符串中的空格,換行,/t(制表符)等
- (NSString*)replaceStringWithString :(NSMutableString*)string{NSString*string1 = [string stringByReplacingOccurrencesOfString:@"\n"withString:@""] ;NSString*string2 = [string1 stringByReplacingOccurrencesOfString:@" "withString:@""] ;NSString*string3 = [string2 stringByReplacingOccurrencesOfString:@"\r"withString:@""] ;NSString*string4 = [string3 stringByReplacingOccurrencesOfString:@"\t"withString:@""] ;returnstring4 ;}
11.通過2D仿射函數(shù)實現(xiàn)小的動畫效果(變大縮小) --可用于自定義pageControl中.
[UIViewanimateWithDuration:0.3 animations:^{? ? ? imageView.transform = CGAffineTransformMakeScale(2,2);} completion:^(BOOLfinished){? ? ? imageView.transform = CGAffineTransformMakeScale(1.0,1.0);}];
10.當有多個導航控制器時,一次設置多個導航控制器
UINavigationBar*navBar = [UINavigationBarappearance] ;// 所有導航條顏色都會改變 -- 一鍵設置//navBar.barTintColor = [UIColor yellowColor] ;[navBar setBackgroundImage:[UIImageimageNamed:@"bg_nav.png"] forBarMetrics:UIBarMetricsDefault] ;
9.UIImage與字符串互轉
//圖片轉字符串? -(NSString*)UIImageToBase64Str:(UIImage*) image? {NSData*data =UIImageJPEGRepresentation(image,1.0f);NSString*encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];returnencodedImageStr;? }//字符串轉圖片? -(UIImage*)Base64StrToUIImage:(NSString*)_encodedImageStr? {NSData*_decodedImageData? = [[NSDataalloc] initWithBase64Encoding:_encodedImageStr];UIImage*_decodedImage? ? ? = [UIImageimageWithData:_decodedImageData];return_decodedImage;? }
8.UITableViewCell可移動,需要打開的代理方法以及移動過程中調用的代理方法
// tableView可移動? 移動完成之后會調用此代理方法- (void)tableView:(UITableView*)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath{}// 移動過程中調用的代理方法 -- 示例為不能跨區(qū)移動/**
*? <#Description#>
*
*? @param tableView
*? @param sourceIndexPath? ? ? ? ? ? ? 所要移動單元格的原始位置
*? @param proposedDestinationIndexPath 將要移動到的位置
*
*? @return return value description
*/- (NSIndexPath*)tableView:(UITableView*)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath*)sourceIndexPath toProposedIndexPath:(NSIndexPath*)proposedDestinationIndexPath{// 移動位置在同一分區(qū)if(sourceIndexPath.section== proposedDestinationIndexPath.section)? ? {// 這時允許單元格移動returnproposedDestinationIndexPath ;? ? }// 不在同一分區(qū) 不讓單元格移動,返回原始的indexPathelse{returnsourceIndexPath ;? ? }}
8.隱藏狀態(tài)欄 修改狀態(tài)欄風格
-(UIStatusBarStyle)preferredStatusBarStyle {returnUIStatusBarStyleLightContent;// 暗背景色時使用} - (BOOL)prefersStatusBarHidden {returnYES;// 是否隱藏狀態(tài)欄}
7.單例+方法鎖
staticSingleton *singleton =nil;+ (Singleton *)defaultSingleton{// 方法鎖,作用為:當多個線程同時調用方法的時候,保證只有一個線程在使用該方法.例如:A和B同時調用defaultSingleton方法,如果A正在使用該方法,那么B就不能調用,直到A使用完成,B才會執(zhí)行該方法.這個也保證單例對象的唯一性,避免初始化方法被同時多次執(zhí)行.@synchronized(self)? ? {if(singleton ==nil)? ? ? ? {? ? ? ? ? ? singleton = [[Singleton alloc] init] ;? ? ? ? }}returnsingleton ;}
6.取消圖片的渲染
[button setImage:[[UIImageimageNamed:@"1.jpg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]? forState:UIControlStateNormal] ;
5. NSNumber
a.是數(shù)字的NS對象的表達形式,如果要把數(shù)字添加到數(shù)組或者字典中士葫,必須要進行轉換乞而,同時要使用數(shù)組中的數(shù)字,還需要轉換成對應的數(shù)字慢显。
b.要轉換數(shù)字可以使用OC提供的包裝方法:@(int)
c.要把NSNumber轉換成字符串爪模,需要使用stringValue方法
4. NSTimer計時器
使用實例代碼如下:
// 第一個參數(shù):多長時間會觸發(fā)一次欠啤,以秒為單位// 第二個參數(shù):如果看到函數(shù)的參數(shù)有target,一般情況下屋灌,都用self// 第三個參數(shù):SEL洁段,需要調用其他的方法,就是每次時鐘被觸發(fā)的時候共郭,去執(zhí)行的方法// 最多可以帶一個參數(shù)祠丝,就是時鐘本身// 第四個參數(shù),暫時不用考慮除嘹,設置成nil// 第五個參數(shù):是否重復写半,通常會設置YES_gameTimer = [NSTimerscheduledTimerWithTimeInterval:1.0f target:selfselector:@selector(updateTimer:) userInfo:nilrepeats:YES];
a.在時鐘觸發(fā)方法中,可以使用sender.fireDate獲取到時鐘被觸發(fā)的時間
b.注意:使用NSTimer的時候尉咕,千萬不要忘記調用invalidate方法關閉時鐘叠蝇。
c.NSTimer可能不會是及時相應觸發(fā)時間的,它的執(zhí)行優(yōu)先級相對較低龙考,因此蟆肆,不要使用NSTimer去做實時響應需求較高的周期性操作。
3. 把圖片做成圓形圖標
self.headIconImageView= [[UIImageViewalloc] initWithFrame:CGRectMake(10,10,40,40)] ;self.headIconImageView.layer.cornerRadius=20;// 設置半徑 self.headIconImageView.layer.masksToBounds=YES;// 邊界是否允許截取
2.根據(jù)UILabel里的內容自適應高度
NSString*contentString = [dic objectForKey:@"content"] ;//從字典中提取字符串CGRectrect = [contentString boundingRectWithSize:CGSizeMake(tableView.bounds.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:15]} context:nil] ;// 內容的自適應高度方法*? @paramCGSize規(guī)定文本顯示的最大范圍? ? ? ? @param options 按照何種設置來計算范圍? ? ? ? @param attributes 文本內容的一些屬性,例如字體大小,字體類型等? (字體不一樣,高度也不一樣)? ? ? ? @parma context 上下文 可以規(guī)定一些其他的設置 但是一般都是nil*/// 枚舉值中的 " | "? 意思是要滿足所有的枚舉值設置.
1.根據(jù)漢字字符串獲取該字符串的拼音然后取得首字母
分享資源? ? 漢字轉換為 拼音 獲取首字母//獲取拼音首字母(傳入漢字字符串, 返回大寫拼音首字母)/*
- (NSString *)firstCharactor:(NSString *)aString
{
? ? //轉成了可變字符串
? ? NSMutableString *str = [NSMutableString stringWithString:aString];
? ? //先轉換為帶聲調的拼音
? ? CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
? ? //再轉換為不帶聲調的拼音
? ? CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
? ? //轉化為大寫拼音
? ? NSString *pinYin = [str capitalizedString];
? ? //獲取并返回首字母
? ? return [pinYin substringToIndex:1];
}
*/NSString*string =@"簡書";if([string length])? ? ? ? {NSMutableString*mutableString = [NSMutableStringstringWithString:string] ;/**
? ? ? ? ? ? *? 由于此方法是在coreFoundation框架下,咱們平時所使用的類型都是Foundation框架下的,所以需要轉換類型.
? ? ? ? ? ? *
? ? ? ? ? ? *? @param string#>? ? string 所需要轉換的原字符#>
? ? ? ? ? ? *? @param range#>? ? range 所需要轉換字符的范圍.如果為0或者是NULL意思是所有字符都轉換#>
? ? ? ? ? ? *? @param transform#> transform 轉換方式#>
? ? ? ? ? ? *? @param reverse#>? reverse 如果為YES,返回原字符串;如果為NO,返回轉換之后的字符串#>
? ? ? ? ? ? *
? ? ? ? ? ? *? @return return value description
? ? ? ? ? ? */// 將所有非英文的字符轉換為拉丁字母,并且?guī)曊{和重音標識// __bridge :只改變當前對象的類型,但是不改變對象內存的管理權限CFStringTransform((__bridgeCFMutableStringRef)mutableString ,0,kCFStringTransformToLatin,NO) ;// 去掉聲調CFStringTransform((__bridgeCFMutableStringRef)mutableString ,0,kCFStringTransformStripDiacritics,NO) ;// 每個單詞的首字母大寫 后再截取字符串NSString*str = [[mutableString capitalizedString] substringToIndex:1];? ? ? ? }