1.使用UIAppearance注意的問題
如果不熟悉可以點擊了解, UIAppearance它的目的就是設(shè)置全局顯示樣式, 我們知道只要帶UI_APPEARANCE_SELECTOR這個宏, 我們就可以使用UIAppearance比如這樣設(shè)置:
- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
- (nullable UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
我們知道UIBarButtonItem它是有狀態(tài)的比如UIControlStateNormal或者是UIControlStateDisabled狀態(tài)
如果通過UIAppearance設(shè)置UIControlStateDisabled狀態(tài)下的顏色是不好使的, 因為使用appearance會有一些延遲, 導(dǎo)致在不同狀態(tài)下的顏色不好使, 我們只要強制刷新一下就可以了:
//?刷新
[self.navigationController.navigationBar?layoutIfNeeded];
所以以后使用UIAppearance在某個狀態(tài)下設(shè)置顏色,字體等不好使, 只需要在對應(yīng)的位置用layoutIfNeeded刷新一下就可以了!
2. UITextField使用注意
先貼一個UITextField如何設(shè)置占位文字的顏色, 如果不先設(shè)置占位文字, 占位文字的顏色是不管用的:
//先設(shè)置占位文字
textField.placeholder?=?@"設(shè)置了占位文字內(nèi)容以后,?才能設(shè)置占位文字的顏色";
//占位文字顏色
[textField?setValue:[UIColor?redColor]?forKeyPath:@"_placeholderLabel.textColor"];
大家監(jiān)聽UITextField文字的改變會用到代理:
#pragma?mark?-
-?(BOOL)textField:(UITextField?*)textField?shouldChangeCharactersInRange:(NSRange)range?replacementString:(NSString?*)string?{
//這里監(jiān)聽文字改變
return?YES;
}
當(dāng)我們輸入字母但是沒確認(rèn)的時候,鍵盤上面是中文的時候,當(dāng)我們選擇中文的時候上面的方法是沒有調(diào)用的
所以我們要監(jiān)聽UITextField的文字改變不建議使用代理, 我們用addTarget監(jiān)聽文字
[textField?addTarget:self?action:@selector(textEditingChanged)?forControlEvents:UIControlEventEditing