4

我的应用程序使用材料组件 ios 的快餐栏。我想换成BackgroundColor蓝色,但我不能。

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

4

4 回答 4

23

你不必破解它:-)

既然你已经swift为这个问题添加了标签,那么我将用 Swift 代码给出答案。

MDCSnackbarMessageView.appearance().snackbarMessageViewBackgroundColor = .green
MDCSnackbarManager.show(MDCSnackbarMessage(text: "Hi there"))
于 2017-08-28T13:15:54.147 回答
5

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

let message = MDCSnackbarMessage()
message.text = "message"

MDCSnackbarManager.messageTextColor = .white
MDCSnackbarManager.snackbarMessageViewBackgroundColor = .blue
MDCSnackbarManager.show(message)
于 2018-12-10T18:19:31.520 回答
2

你可以这样做:

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)
于 2020-10-20T10:06:44.477 回答
-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
}

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

在此处输入图像描述

于 2017-06-09T05:40:34.463 回答