【问题标题】:Is it possible to change BackgroundColor of snackbar for ios?是否可以更改 ios 快餐栏的背景颜色?
【发布时间】:2017-11-10 21:32:09
【问题描述】:

我的应用程序使用了一个名为 material-components-ios 的快餐栏。我想将BackgroundColor 更改为蓝色,但我不能。

那么可以改变snackbar的背景颜色吗?

【问题讨论】:

    标签: ios swift snackbar material-components


    【解决方案1】:

    你可以这样做:

    MDCSnackbarManager.default.snackbarMessageViewBackgroundColor = UIColor.blue
    

    我还创建了一个包装类来简化使用:

    import MaterialComponents.MaterialSnackbar
    
    class Snackbar {
        
        static func show(message: String,
                         actionMessage: String? = nil ,
                         actionHandler: MDCSnackbarMessageActionHandler? = nil,
                         messageTextColor: UIColor? = nil,
                         snackbarMessageViewBackgroundColor: UIColor? = nil,
                         buttonTitleColor: UIColor? = nil){
            
            MDCSnackbarManager.default.snackbarMessageViewBackgroundColor = snackbarMessageViewBackgroundColor
            MDCSnackbarManager.default.messageTextColor = messageTextColor
            MDCSnackbarManager.default.setButtonTitleColor(buttonTitleColor ?? UIColor.white, for: .normal)
    
            let snackbarMessage = MDCSnackbarMessage()
            snackbarMessage.text = message
            if(actionMessage != nil && actionHandler != nil){
                let snackbarMessageAction = MDCSnackbarMessageAction()
                snackbarMessageAction.handler = actionHandler
                snackbarMessageAction.title = actionMessage
                snackbarMessage.action = snackbarMessageAction
            }
    
            MDCSnackbarManager.default.show(snackbarMessage)
        }
        
     
    }
    

    用法:

    Snackbar.show(message: "Super message", snackbarMessageViewBackgroundColor: UIColor.blue)
    

    【讨论】:

      【解决方案2】:

      我正在使用 MaterialComponents 版本 68.1。如果你也是,试试这个:

      let message = MDCSnackbarMessage()
      message.text = "message"
      
      MDCSnackbarManager.messageTextColor = .white
      MDCSnackbarManager.snackbarMessageViewBackgroundColor = .blue
      MDCSnackbarManager.show(message)
      

      【讨论】:

        【解决方案3】:

        你不必破解它:-)

        既然你给这个问题加了swift标签,那我就用Swift代码来回答吧。

        MDCSnackbarMessageView.appearance().snackbarMessageViewBackgroundColor = .green
        MDCSnackbarManager.show(MDCSnackbarMessage(text: "Hi there"))
        

        【讨论】:

        【解决方案4】:

        你必须破解它。 :)

        在您的 pod 中有一个名为的文件。

        MDCSnackbarMessageView.m

        有这样的功能。我已经将值更改为蓝色。它将采用十六进制值颜色代码。

        - (UIColor *)snackbarBackgroundColor {
           // return MDCRGBAColor(0x32, 0x32, 0x32, 1.0f); //previous grey color
            return MDCRGBAColor(0x10, 0x3F, 0xFF, 1.0f);// blue color
        }
        

        现在,再次清理并构建。这是输出。

        【讨论】:

        • @ozzotto 看看我的回答
        • @Kumuluzz 下面的答案应该是公认的答案。
        • 谢谢。如何更改按钮色调?
        猜你喜欢
        • 2017-02-04
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 2019-07-29
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多