iOS開發的常見問題

1、用正則表達式使UITextField接受規定的值只能輸入非零開頭的正整數用下面的代碼

  1. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:  
  2.    (NSRange)range replacementString:(NSString *)string{      
  3.       NSString *result = [textField.text stringByReplacingCharactersInRange:range withString:string];      
  4.       if ([result length] == 0) return YES;   
  5.       // Allow delete all character which are entered.          
  6.       NSString *regex = @"^[0-9]*[1-9][0-9]*$";      
  7.       NSPredicate *prd = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];      
  8.       return [prd evaluateWithObject:result]; 

2、UITableView設置背景爲透明時遇到的問題 UITableView設置背景顏色爲clearColor,設置類型爲Grouped。這裏每個Group的四個角會有黑的。解決辦法:

viewDidLoad中寫入:

  1. TableView.backgroundView = nil;  
  2. TableView.backgroundColor = [UIColor clearColor];  
  3. TableView.opaque = NO

UITextField中顯示錶情 表情列表: http://pukupi.com/post/1964

比如微笑是:

  1.   
  2. label.text = @"\ue415";  

效果如下:

0949360.jpg 

編譯發佈版本的時候移除NSLog輸出的方法

只需要加入到pch文件中即可,__OPTIMIZE__這個編譯選項是發佈版本纔有的,所以在編譯調試版本的時候可以看到Log,而發佈版本則沒有Log

  1. #ifndef __OPTIMIZE__#define NSLog(...) NSLog(__VA_ARGS__)#else#define NSLog(...) {}  
  2. #endif 

3、NSPredicate筆記

  1. NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF like[c] %@", @"aa*bb"]; 

其中:SELF大小寫都行。

aa*bb使用了通配符,*號只能寫在變量中,而不能這樣

  1. @"SELF like[c] %@*%@", @"aa", @"bb" 

字符串本來是要用引號括起來的,不過這裏不用加,NSPredicate會自動加。

測試布爾值

  1. NSPredicate *p = [NSPredicate predicateWithFormat:@"self == NO"];   
  2. BOOL b1 = [p1 evaluateWithObject:[NSNumber numberWithBool:NO]];    
  3. NSPredicate *p2 = [NSPredicate predicateWithFormat:@"self == %@",   
  4. [NSNumber numberWithBool:NO]];      
  5. BOOL b2 = [p2 evaluateWithObject:[NSNumber numberWithBool:NO]]; 

4、動態屬性名

下面這種NSPredicate

  1. NSPredicate *p = [NSPredicate predicateWithFormat:@"name = %@", @"Jimmy"]; 

有時候我們可能想讓name這個關鍵字,也變成變量,寫在外面,那樣就可以寫一個更通用的NSPredicate了。於是很自然地想到了下面的代碼:

  1. NSString *key = @"name";     
  2.  NSString *value = @"Jimmy";      
  3.  NSPredicate *p = [NSPredicate predicateWithFormat:@"%@ = %@", key, value]; 

這樣,如果在執行到第三句之前,我們可以改變keyvalue的值,讓其更通用。想法是好的,但是這樣是錯的,前面說過,NSPredicate要自動添加引號,所以最後得到的格式應該是@"'name' = 'Jimmy'"。明顯不對。要做的就是:

  1. NSString *key = @"name";      
  2. NSString *value = @"Jimmy";      
  3. NSPredicate *p = [NSPredicate predicateWithFormat:@"%K = %@", key, value];
  4. 4

4、設置Segment標題點擊時的顏色改變

 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],NSForegroundColorAttributeName,[UIFont fontWithName:@"SnellRoundhand-Bold" size:13],NSFontAttributeName ,nil];

    [segment setTitleTextAttributes:dic forState:UIControlStateSelected];

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章