gpt4 book ai didi

SwiftUI 更改 macOS 的文本大小

转载 作者:行者123 更新时间:2023-12-04 02:36:59 25 4
gpt4 key购买 nike

将 SwiftUI 用于小范围,我注意到 macOS 上的字体非常小

var body: some View {
VStack {
NavigationView {
List(fetch.Novitadss) { Novitads in
VStack(alignment: .leading) {
// 3.
Text(Novitads.title)
.font(.headline)
.fontWeight(.regular)
.onTapGesture {
UIApplication.shared.open(URL(string: Novitads.link)!)
}
}
}

如果 os 是 macOS,我想添加一个条件来更改 .font(.headline)所以我试过了

                         #if os(iOS)
.font(.headline)
#elseif os(macOS)
.font(.title)
#endif

但我得到“意外的平台条件(预期的‘os’、‘arch’或‘swift’)”

最佳答案

来自 your comment ,你问为什么你的代码不起作用,我会在我的回答中解释。

根据documentation ,条件编译 block 具有以下语法:

enter image description here

请注意,它在 block 内显示“语句”。 .font(.headline) 不是声明,所以把它放在那里是非法的。这在页面下方的正式语法符号中也很明显:

enter image description here

此外,在形式语法正上方的“注释” block 中:

Each statement in the body of a conditional compilation block is parsed even if it’s not compiled. However, there is an exception if the compilation condition includes a swift() platform condition.

这解释了为什么您的 #elseif block 也有错误。

换句话说,#if 语句不是您的 C++ 预处理器指令:)

因此,要解决此问题,您必须在这些 block 中放置一个完整语句。解决此问题的一种(愚蠢的)方法是:

 #if os(iOS)
Text(Novitads.title)
.font(.headline)
.fontWeight(.regular)
.onTapGesture {
UIApplication.shared.open(URL(string: Novitads.link)!)
}
#elseif os(macOS)
Text(Novitads.title)
.font(.title)
.fontWeight(.regular)
.onTapGesture {
// UIApplication.shared.open(URL(string: Novitads.link)!)
// you would use this on macOS to open URLs, right?
NSWorkspace.shared.open(URL(string: Novitads.link)!)
}
#endif

当然,Asperi 的提取platformFont 方法的解决方案要好很多

关于SwiftUI 更改 macOS 的文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com