在開發APP時,當前為了讓APP更加美觀,經常會給NavigationBar設置一個顏色,如果你直接給navigationBar設置顏色,
self.navigationController.navigationBar.backgroundColor = [UIColor whiteColor];
self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
會發現根本達不到效果,呈現出來的顏色根本不是設置的顏色,這是因為系統的navigation設置的透明度的原因
那怎樣才能達到想要的效果呢,你需要一張圖片,然后設置它的圖片就OK了
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navibar_white"] forBarMetrics:(UIBarMetricsDefault)];
如果你說還需要一張圖片太麻煩了,那你可以給UIImage增加一個類目color
@interface UIImage (Color)
/**
* @brief 根據顏色生成純色圖片
*
* @param color 顏色
*
* @return 純色圖片
*/
@end
@implementation UIImage (Color)
/**
* @brief 根據顏色生成純色圖片
*
* @param color 顏色
*
* @return 純色圖片
*/
+ (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
@end
代碼就不需要圖片了(這種類目網上一大堆,要學會利用)
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forBarMetrics:(UIBarMetricsDefault)];
// 無色
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:(UIBarMetricsDefault)];
以后如果需要純色的圖片,自己生成就好了
比如在我們使用button的時候,會給button設置不同狀態的不同的顏色值,省去了給UI要圖片的麻煩了
[self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forState:(UIControlStateNormal)];
[self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forState:(UIControlStateDisabled)];
[self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] forState:(UIControlStateHighlighted)];
正常時候的顏色,按下去的顏色,不能按時候的顏色是不是都有了呢
怎么才能讓button不能按呢,只需要一句話
self.codeButton.enabled = NO;
是不是方便很多