2017-08-21 15 views
3

MFMessageComposeViewControllerのナビゲーションバーの背景色を変更する際に問題があります。MFMessageComposeViewControllerのNavigationBarバックグラウンドカラーを設定します。

私はこのコードを試してみた:

UINavigationBar.appearance().barTintColor = Configuration.Colors.navigationBarBackgroundColor 
UINavigationBar.appearance().backgroundColor = UIColor.green 
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Roboto-Regular", size: 18)!, NSForegroundColorAttributeName: UIColor.white] as [String: AnyObject] 

let composer = MFMessageComposeViewController() 

self?.present(composer, animated: true) { 
    UIApplication.shared.statusBarStyle = .lightContent 
} 

をそして、これは動作しません。最も奇妙なことは、私がMFMailComposeViewControllerのために同じことをするときに働くということです。

私はこのように作曲者に直接色を変えようとしました。

composer.navigationBar.tintColor = Configuration.Colors.navigationBarBackgroundColor 

解決方法が見つかりません。

+1

はこれをチェックしてください:

UINavigationBar.appearance().setBackgroundImage(UIImage.from(color: UIColor.green), for: .default) let composer = MFMessageComposeViewController() self?.present(composer, animated: true, completion: nil) 

1色でUIImageを作成しますリンク[メール作成者のナビゲーション設定](https://stackoverflow.com/questions/39453933/ios-10-can-no-longer-set-barcolor-and-tint- on-mfmessagecomposeviewcontroller) – cole

+0

行をinfo.plistに変更コントローラベースのステータスバーの外観を表示し、NOに設定 –

+0

背景色を設定するプロパティは 'composer.navigationBar.barTintColor'です。 –

答えて

0

私は回避策を見つけました。何とか設定すると、composer.navigationBar.barTintColorUINavigationBar.appearance().barTintColorは機能しません。

この問題を回避するには、背景として1色でUIImageを UINavigationBar.appearance().setBackgroundImage(...)を使用して設定することです

全作業コード:

extension UIImage { 
    static func from(color: UIColor) -> UIImage { 
     let rect = CGRect(x: 0, y: 0, width: 1, height: 1) 
     UIGraphicsBeginImageContext(rect.size) 
     let context = UIGraphicsGetCurrentContext() 
     context!.setFillColor(color.cgColor) 
     context!.fill(rect) 
     let img = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return img! 
    } 
} 
関連する問題