我在顯示MFMailComposeViewController
時通過調用setBackgroundImage
來重置NavigationBar的背景圖像。但是當我嘗試通過在mailComposeController:didFinishWithResult:
中第二次調用setBackgroundImage
將圖像重置爲原始圖像時,它不會明顯更改背景圖像。UINavigationBar setBackgroundImage有時不會立即生效
奇怪的是,日誌顯示我的導航欄的背景圖片已經改變,以後我彈出了幾個視圖控制器(我不知道這是模式的轉變,哪些不是,因爲它是人其他的代碼),背景圖片終於確實更改。但爲什麼它不立即改變?
這裏是我的相關代碼中mailComposeController:didFinishWithResult:
:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"img"]
forBarMetrics:UIBarMetricsDefault];
NSLog(@"Navbar img = %@", [[UINavigationBar appearance]
backgroundImageForBarMetrics:UIBarMetricsDefault]);
感謝@Alex的幫助 - 我不確定它是否在主線程中調用,但在'mailComposeController:didFinishWithResult'中添加'dispatch_async'塊並沒有改變行爲。 – Josh
@Josh 這是值得一擊:) 我看的另一個地方是確保你設置的背景圖像 - 之後,你已經解僱了mailComposeController和-after-你自己的視圖控制器已經再次變得活躍。 –
這對我有效!訣竅是在調用mailComposeController的視圖控制器中的'viewWillAppear'內調用'setBackgroundImage'。你可以把它作爲答案發布,以便我可以接受它嗎? – Josh