聊天平臺原始碼,解決設定導航欄按鈕圖片變色問題

zhibo系統開發發表於2021-10-21

聊天平臺原始碼,解決設定導航欄按鈕圖片變色問題的相關程式碼

利用以下程式碼給導航欄按鈕設定圖片時,發現原本是黑色的切圖顯示成了藍色。


UIButton *editButton = [UIButton buttonWithType:UIButtonTypeSystem];
[editButton setImage:[UIImage imageNamed:@"home_edit"] forState:UIControlStateNormal];
[editButton addTarget:self action:@selector(didTapEditButton:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:editButton];
self.navigationItem.rightBarButtonItem = rightItem;

解決方案

在 iOS 7 的時候,UIImage 多了一個 renderingMode 的列舉型別屬性,以設定 UIImage 物件的渲染方式,即是否根據當前的 Tint Color 進行渲染。UIImageRenderingMode 列舉的系統定義如下:


typedef NS_ENUM(NSInteger, UIImageRenderingMode) {
    UIImageRenderingModeAutomatic,          // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式。 
    UIImageRenderingModeAlwaysOriginal,     // 始終繪製圖片的原始狀態, 不適用檢視Tint Color
    UIImageRenderingModeAlwaysTemplate,     // 始終根據Tint Color進行圖片繪製, 忽略圖片原本的色彩資訊
} API_AVAILABLE(ios(7.0));


renderingMode 屬性的預設值為 UIImageRenderingModeAutomatic,我們可以利用系統提供的 imageWithRenderingMode: 方法進行該屬性值的設定。

於是,我們修改上問題描述中的程式碼,讓 UIImage 始終繪製圖片的原始狀態。

UIImage *image = [UIImage imageNamed:@"home_edit"];
[editButton setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];


以上就是聊天平臺原始碼,解決設定導航欄按鈕圖片變色問題的相關程式碼, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2838551/,如需轉載,請註明出處,否則將追究法律責任。

相關文章