iOS 10 can no longer set barcolor and tint on MFMessageComposeViewController

后端 未结 4 562
被撕碎了的回忆
被撕碎了的回忆 2021-02-04 01:50

Below code works on iOS version 9.x or less, for some reason this does not work if iOS 10

 if([MFMessageComposeViewController canSendText])
             {
               


        
4条回答
  •  一整个雨季
    2021-02-04 02:49

    Issue

    • For some reasons in iOS10.x barTintColor is not working on some of the sharing containers.
    • But there's a workaround to fix the Navigation bar colour on all the sharing containers.

    Solution

    • Use UINavigationBar.appearance() to change the navigation bar colour.
    • Use backgroundColor property & setBackgroundImage(_:for:) method to fix the navigation bar colour.

    Code

    /// Method to set navigation bar color
    func setNavigationBar() -> Void
    {
        // barTintColor will apply color for the app's navigation bar
        UINavigationBar.appearance().barTintColor       = UIColor.blue
    
        // backgroundColor will apply color for some of the sharing container's app except for Messages app
        UINavigationBar.appearance().backgroundColor    = UIColor.blue
    
        // backgroundImage will apply the color image for navigation bar for most of the sharing container's except for `Notes`
        UINavigationBar.appearance().setBackgroundImage(UIImage(color: UIColor.blue), for:UIBarMetrics.default)
    }
    
    /// UIImage extension to create an image from specified color
    extension UIImage
    {
        public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {
            let rect = CGRect(origin: .zero, size: size)
            UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
            color.setFill()
            UIRectFill(rect)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
    
            guard let cgImage = image?.cgImage else { return nil }
            self.init(cgImage: cgImage)
        }
    }
    

    Hope it helps!.

提交回复
热议问题