32位 最多內存0到3G 64位 最多內存0到8G iOS模板code4app.com github.com developer.apple.con 動畫 label不能變小 只能變大,(而uiview uiimageview可變大變小,對於uiview uiimageview在動畫中指定frame name他就會從當前位置大小過分到你指定的位置和大小) 旋轉 旋轉物體的x= 圍繞的物體的 x座標+cosR 角度=(angle/180.0*M_PI) 擴充屬性 若是說從此過程當中遇到系統提供的類不能知足須要,那麼要馬上想到自定義一個類繼承自系統提供的類,在自定義類中擴充在本身想要的屬性和方法,可是,要注意在建立對象時用自定義的類建立對象。 打點調用 字符串指針能夠用retain,copy,非字符串指針只能用copy,非指針類型用assign 導航條的高度是44 終端卸載 sudo rm -rf 名字 tab鍵智能獲取路徑 數據持久化 fmdb plist 對象序列化 單例類 用到全局惟一的對象,就要用單例類,特別是對於某個用戶的信息,極可能用到單例類,用戶信息是惟一的(單例類); NSFileHandel對文件內容管理NSFileManager是對文件管理 目錄必須存在 地圖 2大塊 Locationframework (user location and heading) Mapkit (display annotation ) 關於 發短信 發郵件 廣泛存在大多數app設置裏邊 關於 修改ARC gar檢測是不是arc arc和非arc兼容 TARGETS 中 DDMenuController.m -fobjc-arc 分析項目 大到小 --》小到具體 當farm改變 la'youtsuview調用 調用layoutsubview的時機 一:當view的frame或bounds發生改變 1:直接改view的frame或bounds 會調用view中layoutsubview 2:當屏幕旋轉的時候,視圖控制器中根view發生變化,會調用視圖控制中viewDidLayoutsuview) 二:在當前view上addsubvie添加子view,會調用view中layoutSubview 三:改變view的大小的時候,會觸發父view的layoutsubview被調用 四:當UIScroller中滾動的時候,會調用自身layoutsubview. button select屬性 數據庫》用戶》成功》收藏 數據庫 字符串用長度,數組用個數 selector sel 是哈希 經過哈希算法轉化成整數值 在oc中沒有找到這個 objicet_ SEL 類成員方法的指針 能夠理解 @selector()就是取類方法的編號,他的行爲基本能夠等同C語言的中函數指針,只不過C語言中,能夠把函數名直接賦給一個函數指針,而Object-C的類不能直接應用函數指針,這樣只能作一個@selector語法來取. 它的結果是一個SEL類型。這個類型本質是類方法的編號(函數地址) CoreData Z_PK 是表的主鍵,從1開始遞增,惟一值 Z_ENT 表在xcdatamodel 中的索引值,建立了5個表,Z_ENT的區間就是[1,5 ] Z_OPT 表示的是每條數據被操做的次數,初始化值爲1,只要是增刪改查都會加1 iphone開發重要基礎知識------委託代理(degegate) 委託代理(degegate),顧名思義,把某個對象要作的事情委託給別的對象去作。那麼別的對象就是這個對象的代理,代替它來打理要作的事。反映到程序中, 首先要明確一個對象的委託方是哪一個對象,委託所作的內容是什麼。委託機制在不少語言中都用到的,這只是個通用的思想,網上會有不少關於這方面的介紹。 那麼在蘋果開發過程當中,用到委託的程序實現思想以下,我主要拿如何在視圖之間傳輸信息作個例子。譬如:在兩個頁面(UIIview視 圖對象)實現傳值,用委託(delegate)能夠很好作到。 ViewController的生命週期中各方法執行流程以下: init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnload—>dealloc 使用編譯器選項來開啓和關閉ARC 開發者使用-fobjc-arc 編譯選項開啓ARC,還能夠對某一個文件使用ARC,便於在使用手動引用計數的文件中使用ARC。對於已經使用ARC的工程,仍能夠指定一個文件來關閉ARC經過-fno-objc-arc編譯選項。 編譯時候出現路徑錯誤解決辦法 路徑錯誤須要在search Path的library裏改爲絕對路徑 打包流程 1.在MyNslog中修改  2.在TARGETS裏的identifier修改 3.在build setting裏邊修改 code singning的release (project和targets都得修改) 注意 鑰匙串的添加進去 沒有的話須要登陸 下載 4.而後選爲iOS device 在project裏邊選擇 歸檔 在iTunes修改app內容upload 須要根據相應帳號登陸iTunes修改內容 而後再xcode 的tool中 上傳 cornerStone  ARC 與非ARC 互轉 1, target -> Build phases -> complie sources -fobjc-arc 轉成arc -fNo-objc-arc 轉成非a 縮放效果 記住要設置point CGAffineTransform aff; aff = CGAffineTransformScale(self.view.transform, 0.5f, 0.5f); [self.view setTransform:aff]; CGAffineTransformRotate(transform, M_PI);是旋轉的。 CGAffineTransformMakeRotation(-M_PI);也是旋轉的 transform = CGAffineTransformScale(transform, -1.0, 1.0);是縮放的。 view.transform = CGAffineTransformIdentity;線性代數裏面講的矩陣變換,這個是恆等變換 當 你改變過一個view.transform屬性或者view.layer.transform的時候須要恢復默認狀態的話,記得先把他們重置可使用 view.transform = CGAffineTransformIdentity, 或者view.layer.transform = CATransform3DIdentity, Xcode6.0下載地址 http://pan.baidu.com/s/1pJug2xX 密碼: e6q2 ios動態獲取UILabel的高度和寬度 分類: UI 2012-12-16 15:12 1871人閱讀 評論(0) 收藏 舉報 iosiOSIOSUILabel動態寬度高度 在使用UILabel存放字符串時,常常須要獲取label的長寬數據,本文列出了部分經常使用的計算方法。 1.獲取寬度,獲取字符串不折行單行顯示時所須要的長度 CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 注:若是想獲得寬度的話,size的width應該設爲MAXFLOAT。 2.獲取高度,獲取字符串在指定的size內(寬度超過label的寬度則換行)所需的實際高度. CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap]; 注:若是想獲得高度的話,size的height應該設爲MAXFLOAT。 3.實際編程時,有時須要計算一段文字最後一個字符的位置,並在其後添加圖片或其餘控件(如info圖標),下面代碼爲計算label中最後一個字符後面一位的位置的方法。 CGSize sz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, 40)]; CGSize linesSz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap]; if(sz.width <= linesSz.width) //判斷是否折行 { lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y); } else { lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height); } iOS開發之指定UIView的某幾個角爲圓角 2013-11-15 10:58:56| 分類: 技術日誌 |舉報 |字號 訂閱 若是須要將UIView的4個角所有都爲圓角,作法至關簡單,只需設置其Layer的cornerRadius屬性便可(項目須要使用QuartzCore框架)。而若要指定某幾個角(小於4)爲圓角而別的不變時,這種方法就很差用了。 對於這種狀況,Stackoverflow上提供了幾種解決方案。其中最簡單優雅的方案,就是使用UIBezierPath。下面給出一段示例代碼。 UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120, 10, 80, 80)]; view2.backgroundColor = [UIColor redColor]; [self.view addSubview:view2]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view2.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = view2.bounds; maskLayer.path = maskPath.CGPath; view2.layer.mask = maskLayer; 其中, byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight 指定了須要成爲圓角的角。該參數是UIRectCorner類型的,可選的值有: * UIRectCornerTopLeft * UIRectCornerTopRight * UIRectCornerBottomLeft * UIRectCornerBottomRight * UIRectCornerAllCorners 從名字很容易看出來表明的意思,使用「|」來組合就行了。 適應label的長度選擇image位置 ios6 CGSize atextSize = [titleLabel.text sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(200, 100) lineBreakMode:NSLineBreakByTruncatingTail]; ios7 //// 動態獲取高度或者寬度 -(CGSize)getHeightOrWeight:(NSString *)Title withFont:(int)font { NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:font]}; CGSize titleSize = [Title boundingRectWithSize:CGSizeMake(200, 100) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size; return titleSize; } 輸出控件frame NSStringFromCGRect(self.loginView.frame) 自適應label ios7 +(float)getTextWidth:(float)textHeight text:(NSString *)text fontSize:(float)fontSize isBold:(BOOL)isBold { if ([text length] == 0) { return 0; } if ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue] >= 7.0) { if (isBold) { return [text boundingRectWithSize:CGSizeMake(MAXFLOAT, textHeight) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:fontSize], NSFontAttributeName, nil] context:nil].size.height; } else { return [text boundingRectWithSize:CGSizeMake(MAXFLOAT, textHeight) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:fontSize], NSFontAttributeName, nil] context:nil].size.width; } } else { if (isBold) { return [text sizeWithFont:[UIFont boldSystemFontOfSize:fontSize] constrainedToSize:CGSizeMake(MAXFLOAT, textHeight) lineBreakMode:NSLineBreakByWordWrapping].width; } return [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(MAXFLOAT, textHeight) lineBreakMode:NSLineBreakByWordWrapping].width; } } Ios6 //// 動態獲取高度或者寬度 -(CGSize)getHeightOrWeight:(NSString *)Title withFont:(int)font { // NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:font]}; CGSize titleSize = [Title sizeWithFont:[UIFont systemFontOfSize:font] constrainedToSize:CGSizeMake(200, 100) lineBreakMode:NSLineBreakByTruncatingTail]; return titleSize; } 爲控件增長邊框 - (void)loadView { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide]; UIImageView *contentView = [[MyUIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; [contentView setImage:[UIImage imageNamed:@"1.jpg"]]; [contentView setUserInteractionEnabled:YES]; self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; [self.view addSubview:contentView]; self.view.backgroundColor=[UIColor blackColor]; /* CALayer *layer=[contentView layer]; [layer setMasksToBounds:YES]; [layer setCornerRadius:10.0]; [layer setBorderWidth:4.0]; */ //爲視圖增長邊框 contentView.layer.masksToBounds=YES; contentView.layer.cornerRadius=20.0; contentView.layer.borderWidth=10.0; contentView.layer.borderColor=[[UIColor blueColor] CGColor]; [contentView release]; } NSAttributeString 字符串拼接 當有收藏無我的中心 參考羊絨圍巾網 iOS 自帶的解析json的類。 1。數據源是NSData類型的,也能夠是NSString類型的,可是NSString類型的能夠轉換爲NSData類型的. NSString *responseString; NSData *da= [responseString dataUsingEncoding:NSUTF8StringEncoding]; NSError *error = nil; id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; if ([jsonObject isKindOfClass:[NSDictionary class]]){ NSDictionary *dictionary = (NSDictionary *)data; NSLog(@"Dersialized JSON Dictionary = %@", deserializedDictionary); }else if ([jsonObject isKindOfClass:[NSArray class]]){ NSArray *nsArray = (NSArray *)jsonObject; NSLog(@"Dersialized JSON Array = %@", deserializedArray); } else { NSLog(@"An error happened while deserializing the JSON data."); } 1.定義一個字符串a, 截取a 的某一個部分,複製給b, b必須是int型 NSString *a = @"1.2.30"; int b= [[a substringWithRange:NSMakeRange(4,2)] intValue]; NSLog(@"a:%@ \n",a ); NSLog(@"b:%d",b ); Output : 2011-07-05 11:49:08.170 Q[4005:207] a:1.2.30 2011-07-05 11:49:08.172 Q[4005:207] b:30 解析以下:substringWithRange: 專門截取字符串的一塊肉 NSMakeRange(4,2) 從第4個字符開始截取,長度爲2個字符,(字符串都是從第0個字符開始數的哦~!) b = [a intValue]; 將 a 轉換爲 整數型 b = [a floatValue]; 將 a 轉換爲 小數型 b = [a boolValue]; 將 a 轉換爲 布爾型(true / false) b = [a integerValue]; 將 a 轉換爲 整數型 b = [a longLongValue]; 將 a 轉換爲 長整型 2。 字符串截取到第n位 (substringToIndex: n)(第n 位不算再內) - (void)viewDidLoad { NSString *a = @"i like long dress"; NSString *b = [a substringToIndex:4]; NSLog(@"\n b: %@",b); } b: i li 3。字符串從第n 位開始截取,直到最後 (substringFromIndex:n)(包括第 n 位) - (void)viewDidLoad { NSString *a = @"i like long dress"; NSString *b = [a substringFromIndex:4]; NSLog(@"\n b: %@",b); } b: ke long dress 。NSMutableString 爲可變的字符串 NSString 爲不可變的字符串 -(void)viewDidLoad { NSMutableString *a = [[NSMutableString alloc]initWithString:@"123456798"]; NSLog(@" \n a: %@\n",a); [a deleteCharactersInRange:NSMakeRange(1,2)]; NSLog(@" \n a: %@\n",a); [a release]; } 2011-07-05 20:59:34.169 Q[9069:207] a: 123456798 2011-07-05 20:59:34.171 Q[9069:207] a: 1456798 計算兩個時間差的兩個函數 兩個時間之差 - (NSString *)intervalFromLastDate: (NSString *) dateString1 toTheDate:(NSString *) dateString2 { NSArray *timeArray1=[dateString1 componentsSeparatedByString:@"."]; dateString1=[timeArray1 objectAtIndex:0]; NSArray *timeArray2=[dateString2 componentsSeparatedByString:@"."]; dateString2=[timeArray2 objectAtIndex:0]; NSLog(@"%@.....%@",dateString1,dateString2); NSDateFormatter *date=[[NSDateFormatter alloc] init]; [date setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *d1=[date dateFromString:dateString1]; NSTimeInterval late1=[d1 timeIntervalSince1970]*1; NSDate *d2=[date dateFromString:dateString2]; NSTimeInterval late2=[d2 timeIntervalSince1970]*1; NSTimeInterval cha=late2-late1; NSString *timeString=@""; NSString *house=@""; NSString *min=@""; NSString *sen=@""; sen = [NSString stringWithFormat:@"%d", (int)cha%60]; // min = [min substringToIndex:min.length-7]; // 秒 sen=[NSString stringWithFormat:@"%@", sen]; min = [NSString stringWithFormat:@"%d", (int)cha/60%60]; // min = [min substringToIndex:min.length-7]; // 分 min=[NSString stringWithFormat:@"%@", min]; // 小時 house = [NSString stringWithFormat:@"%d", (int)cha/3600]; // house = [house substringToIndex:house.length-7]; house=[NSString stringWithFormat:@"%@", house]; timeString=[NSString stringWithFormat:@"%@:%@:%@",house,min,sen]; [date release]; return timeString; } 一個時間距如今的時間 - (NSString *)intervalSinceNow: (NSString *) theDate { NSArray *timeArray=[theDate componentsSeparatedByString:@"."]; theDate=[timeArray objectAtIndex:0]; NSDateFormatter *date=[[NSDateFormatter alloc] init]; [date setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *d=[date dateFromString:theDate]; NSTimeInterval late=[d timeIntervalSince1970]*1; NSDate* dat = [NSDate date]; NSTimeInterval now=[dat timeIntervalSince1970]*1; NSString *timeString=@""; NSTimeInterval cha=late-now; if (cha/3600<1) { timeString = [NSString stringWithFormat:@"%f", cha/60]; timeString = [timeString substringToIndex:timeString.length-7]; timeString=[NSString stringWithFormat:@"剩餘%@分", timeString]; } if (cha/3600>1&&cha/86400<1) { timeString = [NSString stringWithFormat:@"%f", cha/3600]; timeString = [timeString substringToIndex:timeString.length-7]; timeString=[NSString stringWithFormat:@"剩餘%@小時", timeString]; } if (cha/86400>1) { timeString = [NSString stringWithFormat:@"%f", cha/86400]; timeString = [timeString substringToIndex:timeString.length-7]; timeString=[NSString stringWithFormat:@"剩餘%@天", timeString]; } [date release]; return timeString; } 自適應cell NSString *content = [[m_tableviewDataArray objectAtIndex:indexPath.row] objectForKey:@"content"]; content = [NSString stringWithFormat:@"評論:%@",content]; CGSize size = [content sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:CGSizeMake(224, 1000) lineBreakMode:NSLineBreakByCharWrapping]; return 43+size.height; [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 當圖片請求加密時。。。。 _imageUrl = [[Global shared].textDataUrl stringByAppendingFormat:@"%@%@",@"User_Logo?id=",[[dic objectForKey:@"user"] objectForKey:@"uid"]]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:_imageUrl]]; // [self userHead:dic]; UIImage *image = [UIImage imageWithData:[GTMBase64 decodeData:data]]; if (image) { dispatch_async(dispatch_get_main_queue(), ^{ // self.imageData = [GTMBase64 decodeData:image]; cell.headImageView.image = image; }); } }); 汽包拉伸 UIImage * image = [UIImage imageNamed:@"img_dialog.9.png"]; image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 0, 5) resizingMode:UIImageResizingModeStretch]; // UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; [cell.contentBgImage setImage:image]; 經過手勢移除鍵盤 - (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)]; tapGr.cancelsTouchesInView = NO; [self.view addGestureRecognizer:tapGr]; } -(void)viewTapped:(UITapGestureRecognizer*)tapGr{ [activitySearchBar resignFirstResponder]; } webView改變字體大小 NSString*str=[NSString stringWithFormat:@"document.body.style.fontSize=%f;",12.0]; [webView stringByEvaluatingJavaScriptFromString:str]; xcode路徑  mac系統如何顯示和隱藏文件 蘋果Mac OS X操做系統下,隱藏文件是否顯示有不少種設置方法,最簡單的要算在Mac終端輸入命令。顯示/隱藏Mac隱藏文件命令以下(注意其中的空格而且區分大小寫): 顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false NSString *string = @"你知道怎麼在一個設置不一樣的顏色嘛?"; NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string]; //設置顏色(NSForegroundColorAttributeName表明要設置顏色, value表明值, range 表明範圍) /** 其餘設置: 1.NSForegroundColorAttributeName //顏色 2.NSFontAttributeName //字體 3.NSBackgroundColorAttributeName //背景色 //還有其餘的不少的屬性,能夠本身去看蘋果的API,這裏再也不詳述 */ [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:NSMakeRange(1, 7)]; 證書問題 pro身份過時能夠改下名字 從新上傳  有時候在畫cell的時候,裏面的控件我會給它設置tag,用來在cellForRowAtIndexPath中獲取每一個cell的子控件,若是子控件有個UIButton,你給它設置targeta後,在響應的方法裏沒辦法分是從哪個cell的button觸發的,由於全部的cell的那個UIbutton的tag是同樣的。 既然不準改變tag,有沒有其餘辦法知道它的父容器Cell的行數呢?知道行數了不會知道是哪個cell的Button觸發的。 方法1: NSString* cellStr1 = [NSString stringWithFormat:@"%d", indexPath.row]; [btn_attention setTitle:cellStr1 forState:UIControlEventTouchCancel]; 獲取title,並轉爲行數: NSString* cellIndex = [sender titleForState:UIControlEventTouchCancel]; int tag =[cellIndex intValue]; 方法2: UITableViewCell * cell = (UITableViewCell *)[[sender superview] superview]; NSIndexPath * path = [self.baseTableView indexPathForCell:cell]; //獲取按鈕所在的cell的row BnetBillMode = [self.tableArray objectAtIndex:path.row]; 方法3: [cell.button addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside]; 那麼點擊button時就會調用 - (void)didTapButton:(UIButton *)sender 剩下的就是如何經過這個sender得到它所在的cell。咱們這麼實現這個方法, - (void)didTapButton:(UIButton *)sender { CGRect buttonRect = sender.frame; for (CustomCell *cell in [self.baseTableView visibleCells]) { if (CGRectIntersectsRect(buttonRect, cell.frame)) { //cell就是所要得到的 } } } 查找某個數組中包含某個字符串 NSArray * array = [NSArray arrayWithObjects:@"a",@"aa",@"1a",@"ea",@"add",@"", nil]; for (NSString * a in array) { NSRange rang = [a rangeOfString:@"a"]; if (rang.length>0) { NSLog(@"%@",a); } } webViewCell 調整高度 - (void)webViewDidFinishLoad:(UIWebView *)webView { for (UIScrollView *view in webView.subviews) { // int miHeight; if ([view isKindOfClass:[UIScrollView class]]) { NSString *str = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"]; int iHeight = [str intValue]; if (iHeight<10) { iHeight = 10; } webHeight = iHeight; webView.frame = CGRectMake(0, 166, 320, webHeight+166); // NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys: nil]; // // [dic setValue:[NSString stringWithFormat:@"%d",iHeight] forKey:[NSString stringWithFormat:@"%d",webView.tag]]; [self OnLoadFinish:(WebViewCell *)webView.superview.superview]; } } } - (void)OnLoadFinish:(WebViewCell *)sender { [m_tableview beginUpdates]; //.......... [m_tableview endUpdates]; } NSMutableAttributedString 改變部分顏色 self.title = @"For iOS 6 & later"; NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Using NSAttributed String"]; [str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0,5)]; [str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(6,12)]; [str addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(19,6)]; [str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-BoldItalicMT" size:30.0] range:NSMakeRange(0, 5)]; [str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:30.0] range:NSMakeRange(6, 12)]; [str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Courier-BoldOblique" size:30.0] range:NSMakeRange(19, 6)]; attrLabel.attributedText = str; nsrang肯定字符串的位置 - (void)viewDidLoad { [super viewDidLoad]; //抽取指定範圍的字符串 NSString *string1 = @"0123456789"; NSRange range1 = NSMakeRange(0, 4);//NSMakeRange這個函數的做用是從第0位開始計算,長度爲4 NSLog(@"從第0個字符開始,長度爲4的字符串是:%@",[string1 substringWithRange:range1]); NSLog(@"抽取從頭開始到第4個字符:%@",[string1 substringToIndex:4]); NSLog(@"抽取從第6個字符開始到末尾:%@",[string1 substringFromIndex:6]); NSString *string2 = @"wo shi xiao bai zhu"; NSRange range2 = [string2 rangeOfString:@"bai"]; if (range2.length > 0) { NSLog(@"{字符串中「bai」的位置,長度}==%@",NSStringFromRange(range2)); } //判斷在一串字符串中是否找到某個字符串 NSRange range3 = [string2 rangeOfString:@"zhu"]; if (range3.location != NSNotFound) { NSLog(@"找到了@「zhu」這個字符串!"); } else NSLog(@"沒找到!"); } 判斷是否爲空 + (BOOL)arrayNOTNull:(id)object{ if ((NSNull *)object == [NSNull null]){ return NO; } return YES; } + (BOOL)isNOTNull:(id)object{ // 判斷是否爲空串 if ([object isEqual:[NSNull null]]) { return NO; } else if ([object isKindOfClass:[NSNull class]]) { return NO; } else if (object==nil){ return NO; } else if ([(NSString *)object isEqualToString:@""] ||[(NSString *)object isEqualToString:@" "]){ return NO; } return YES; } webview連接跳轉 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ if (navigationType == UIWebViewNavigationTypeLinkClicked) { NSURL *url =[request URL]; NSString *curUrl = [url absoluteString]; NSLog(@"............%@",curUrl); [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curUrl]]; return false; } return YES; } scrollView 的偏移量 CGFloat pageWidth = scrollView.frame.size.width; int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; downpageControl.currentPage = page; viewControl的view放到view上須要當前view control指針指向他 判斷團購時間 - (NSString *)intervalFromLastDate1: (NSString *) dateString1 { NSArray *timeArray1=[dateString1 componentsSeparatedByString:@"."]; dateString1=[timeArray1 objectAtIndex:0]; NSDate * currentTime=[NSDate date]; NSDateFormatter *date=[[NSDateFormatter alloc] init]; [date setDateFormat:@"yyyy-MM-dd"]; NSString * locationString=[date stringFromDate:currentTime]; NSLog(@"locationString:%@",locationString); // [date release]; NSString * startDate = self.stateArray[0]; NSDate *d1=[date dateFromString:dateString1]; NSTimeInterval late1=[d1 timeIntervalSince1970]*1; NSDate *d2=[date dateFromString:startDate]; NSTimeInterval late2=[d2 timeIntervalSince1970]*1; NSTimeInterval cha=late1-late2; NSString *timeString=@""; if (cha<0) { timeString=[NSString stringWithFormat:@"未開始"]; } [date release]; return timeString; } 判斷字典爲空 ( 1. NSString *value = [dictionary objectForKey:@"First"]; 2. if ((NSNull *)value == [NSNull null]) { 3. } #遍歷找到btn UITableViewCell * cell = (UITableViewCell*)[btn superview]; for (UIButton * btn1 in [cell subviews]) { if ([btn1 isMemberOfClass:[UIButton class]]) { if (btn1==btn) { btn1.backgroundColor = [UIColor redColor]; } else { btn1.backgroundColor = [UIColor grayColor]; } } } //氣泡拉伸 textBackImageView.image = [[UIImage imageNamed:@"ReceiverTextNodeBkgHL_ios7"]resizableImageWithCapInsets:UIEdgeInsetsMake(28, 18, 25, 10)] ;