SwiftUI macOS开发,Button和TextField控件设置背景色不生效的问题

原创 吴就业 111 0 2024-07-14

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/b5a27704b5c1438b9b3d6c2947c268a9

作者:吴就业
链接:https://wujiuye.com/article/b5a27704b5c1438b9b3d6c2947c268a9
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

笔者在使用SwiftUI开发macOS APP的过程中踩了一个坑,修改Button和TextField控件的背景颜色均不生效。

Button的表现是这样的:

截屏2024-07-14 15.04.46

当我问ChatGPT以及Google搜索博客时,发现所有博客介绍的都是非常正规的写法,例如:

Button(action: {
   // todo  
}) {
    Text("wujiuye.com")
}.background(.red)

但这在开发macOS app时是不生效的。想要设置背景色,必须要给Button设置一个PlainButtonStyle样式(不知道为什么)。

Button(action: {
   // todo  
}) {
    Text("wujiuye.com")
}.buttonStyle(PlainButtonStyle())
.background(.red)

只有先调用.buttonStyle(PlainButtonStyle())清除系统的默认样式,我们设置的背景色才生效。

TextField控件也是一样的,在使用SwiftUI开发macOS app,想要自定义TextField的样式,就必须要先移除默认样式:给TextField设置一个PlainButtonStyle样式,代码如下:

TextField("wujiuye.com", text: $filterInput)
     .textFieldStyle(PlainTextFieldStyle())
     .foregroundColor(.white)
     .background(.white.opacity(0.11))
   //......

答案来源于:https://stackoverflow.com/questions/65391903/difference-between-background-color-for-textfield-in-swiftui-between-macos-and-i,虽然这个提问是关于TextField的,但想必其他组件都是一样的,我试了Button确实如此。

#前端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

如何将macOS app发布到app store?

开发完一个macOS app之后,我们应该如何将其发布到app store呢?这个文档记录了笔者从零开始一步步学习将自己开发好的macOS app发布到app store的过程。

如何编译构建一个同时支持多cpu架构的静态链接库(.a文件)

我想要让自己的mac OS应用支持更多用户可以使用,就必须要打出一个能同在amd64架构cpu的mac os设备上运行,也需要能在arm64架构cpu的mac os设备上运行。

使用node:alpine基础镜像今天突然就构建不了了

我的一个nextjs项目使用node:alpine基础镜像,在此之前部署到线上都能正常构建和运行,今天修改点代码提交到生产环境,发现竟然镜像构建失败了。

SwiftUI Chart如何修改字体颜色

使用Charts绘制的图表,默认文字都是灰色的,当我们app的主题颜色是固定深色的情况下,图表的文字会看不清,怎么修改呢?

Mac APP开发,Swift调用C静态链接库的函数

开发Mac APP,Swift如何调用C函数,以及如何传递回调函数,是一个比较复杂的Swift调用C的场景。

go编译为c静态链接库给c语言调用,c语言传递函数给go语言回调

c语言调用go语言怎么传递回调函数,go怎么调用c传递的回调函数?本篇提供案例代码,实测方法可行。