ios - 在 MFMailComposeViewController 中将“发送和取消”按钮设置为白色背景上的白色以外的其他内容

标签 ios swift

有时发送和取消按钮显示为白色,因此它们在 MFMailComposeViewController 的白色背景上几乎不可见。 MFMailComposeViewController 的实例是在按下带有 dataDetectorTypes .Link 的 UITextView 后创建的,因此我无法在 viewDidLoad 函数中立即访问该实例,如下所示:

extension MFMailComposeViewController {
    override public func viewWillAppear(animated: Bool) {        
        super.viewWillAppear(animated)
        UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
     }

    override public func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        UINavigationBar.appearance().barTintColor = UIColor.blackColor()
    }

    override public func viewDidLoad() {
        UINavigationBar.appearance().barTintColor = UIColor.redColor()
        navigationBar.barTintColor = UIColor.blueColor()
        super.viewDidLoad()
        navigationBar.translucent = false
        navigationBar.opaque = false
    }
}

如何在 MFMailComposeViewController 上的按钮上设置默认颜色并避免弄乱应用程序其余部分的导航栏?

因为现在 barTintColor 在第一次进入时没有设置。但第二次设置为 blackColor,我猜是从前一个实例的 viewWillDisappear 调用。

最佳答案

一开始..不要用
UINavigationBar.appearance().barTintColor = UIColor.blackColor()

如果您有一个带有 UINavigationController 的 Storyboard,请将那里的色调设置为您的 UINavigationBar。

每个 UINavigationController 只有一个 navigationBar

你不能用那种丑陋的外观工具来处理所有情况下的颜色。一些 Controller (MailComposer、PhotoRoll、...)使用黑色的 BarButtons,有些则被染成白色。

如果您正在使用外观...所有条都受到影响(仅新创建的条,而不是内存中的条)

关于ios - 在 MFMailComposeViewController 中将“发送和取消”按钮设置为白色背景上的白色以外的其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60005444/

相关文章:

ios - 我有自定义文件类型,如何让其他 iOS 应用程序打开它?

ios - WKWebview 允许LinkPreview 错误地中断文本选择

ios - swift 中的 3D 立方体转换 View

ios - 如何使用swift在sprite kit中旋转sprite

swift - Swift 将内容移到键盘后面不起作用

ios - 从 .xib 文件加载接口(interface)的自定义 UIView 类中出现错误

iphone - Facebook IOS 应用内登录对话框不 Conceal 密码

json - 使用 Alamofire 获取 json 值

iphone - 如何在.xib中安装Ubuntu字体,或者我们可以更改Xcode 4.5.1的系统默认字体(不是通过Code而是应通过.xib)

ios - Facebook 使用图形 API 使用受众选择器发布到墙上