透明的UIView遮擋住了SuperView,使SuperView不能響應點擊事件怎麼辦?把UIView的userInteractionEnabled屬性設置爲NO啊。
2.如果點擊一個父視圖上的子視圖沒有反應,有兩種情況:第一種就是上面的第一點,第二種就是父視圖或子視圖沒有給frame---與---父視圖的frame給錯了,給小了之類的
3.協議三部曲:接入協議--->設置代理--->實現協議方法
4.NSString 轉換成NSData 對象
NSData* xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding];
5.NSData 轉換成NSString對象
NSData * data;
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
6.UITableView的刷新
- #pragma mark - 數據發生改變後一定要重新刷新數據
- - (void)viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
- /**
- * clearsSelectionOnViewWillAppear
- * 這個是它的一個屬性,默認是yes 返回列表頁面的時候,默認取消這行的選中狀態,可是我們已經把這條數據刪除的話,會出問題
- * 如果你點擊了一行cell,進入下一個頁面,在這個頁面中,我們把本該屬於這行cell的數據給刪了
- * 如果 self.clearsSelectionOnViewWillAppear = yes,返回前一頁時,會刷新這一行cell,執行cellForRow方法,結果數據卻沒了,就崩潰了
- * 如果 self.clearsSelectionOnViewWillAppear = no,不會刷新這一行cell,就沒事兒了
- */
- self.clearsSelectionOnViewWillAppear =NO;
- [self.tableView reloadData];---->並不一定要放在這裏,看取得數據在什麼位置,刷新數據在什麼位置
- }
7.awakeFromNib(storyboard)和 viewDidLoad的區別
awakeFromNib
當.nib文件被加載的時候,會發送一個awakeFromNib的消息到.nib文件中的每個對象,每個對象都可以定義自己的 awakeFromNib函數來響應這個消息,執行一些必要的操作。也就是說通過nib文件創建view對象是執行awakeFromNib 。
viewDidLoad
當view對象被加載到內存是就會執行viewDidLoad,所以不管通過nib文件還是代碼的方式創建對象都會執行viewDidLoad。awakeFromNib和viewDidLoad的區別
8.將漢字轉換爲不帶音調的拼音
- - (NSString *)transformMandarinToLatin:(NSString *)string
- {
- NSMutableString *preString = [string mutableCopy];
- /*轉換成成帶音 調的拼音*/
- CFStringTransform((CFMutableStringRef)preString, NULL, kCFStringTransformMandarinLatin, NO);
- /*去掉音調*/
- CFStringTransform((CFMutableStringRef)preString, NULL, kCFStringTransformStripDiacritics, NO);
- return preString;
- }
9.圖片適應問題
有兩個view: view1,view2
view2添加view1到中,如果view2大於view1,或者view2的座標不全在view1的範圍內,view2是蓋着view1的,意思就是超出的部份也會畫出來
UIView有一個屬性,clipsTobounds 默認情況下是NO。
如果,我們想要view2把超出的那部份隱藏起來的話,就得改變它的父視圖也就view1的clipsTobounds屬性值。
view1.clipsTobounds = YES;
10.第三方FMDB數據庫操作問題
Unknown error finalizing or resetting statement (5: database is locked)
在使用fmdb時有時候一不小心沒寫好代碼就會這樣子啦,爲什麼呢,其實呢,應該是在前面代碼中有調用數據庫而且並沒有調用[db close]就直接跳出結果來了,所以在前面的數據庫操作中先運行[db close]再返回數據即可;
- 通過註冊鍵盤顯示的消息
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShown:)
- name:UIKeyboardWillShowNotification object:nil];
- - (void)keyboardWillShown:(NSNotification*)aNotification{
- // 鍵盤信息字典
- NSDictionary* info = [aNotification userInfo];
- }
11. 改變導航欄中間標題顏色
- UIColor * color = [UIColor whiteColor];
- NSDictionary * dict = [NSDictionary dictionaryWithObject: colorforKey:NSForegroundColorAttributeName];
- self.navigationController.navigationBar.titleTextAttributes = dict;
12.UIWebView要實現橫向滑動,跟UIWebview的增高沒有關係,你需要設定UIWebView的屬性scrollView的contentsize.width大於UIWebView的frame.size.width.
13.如何監測系統鍵盤的彈出
- 通過註冊鍵盤顯示的消息
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShown:)
- name:UIKeyboardWillShowNotification object:nil];
- - (void)keyboardWillShown:(NSNotification*)aNotification{
- // 鍵盤信息字典
- NSDictionary* info = [aNotification userInfo];
- }
14.改變狀態欄顏色
- 在Info.plist 添加
- UIViewControllerBasedStatusBarAppearance, 設置值爲 NO
- 然後再didFinishLaunchingWithOptions的AppDelegate, 添加這些代碼:
- [application setStatusBarHidden:NO];[application setStatusBarStyle:UIStatusBarStyleLightContent];
15.路徑截取字符串的一些處理
- // 從路徑中獲得完整的文件名(帶後綴)
- exestr = [filePath lastPathComponent];
- // 獲得文件名(不帶後綴)
- exestr = [exestr stringByDeletingPathExtension];
- // 獲得文件的擴展類型(不帶'.')
- exestr = [filePath pathExtension];