这是我的实现:
struct ContentView: View {
var movies: [Movie]
var body: some View {
List(movies, children: \.movies) { movie in
Text(movie.title)
}
}
}
struct Movie: Identifiable {
let id: String
let title: String
var movies: [Movie]?
}
Run Code Online (Sandbox Code Playgroud)
这是 iOS 16.1 上的动画:

从iOS 16.4开始,动画就被破坏了:

这是操作系统级别的错误还是我应该使用其他技术?
我想用一个与文本具有相同宽度的矩形在标题下划线。
首先,我创建一个带下划线的文本,如下所示:
struct Title: View {
var body: some View {
VStack {
Text("Statistics")
Rectangle()
.foregroundColor(.red)
.frame(height: (5.0))
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我得到以下结果:
现在我想得到这个结果:
所以我想知道是否可以通过编写以下内容来绑定文本宽度并将其应用于矩形:
struct Title: View {
var body: some View {
VStack {
Text("Statistics")
Rectangle()
.foregroundColor(.red)
.frame(width: Text.width, height: (5.0))
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,我可以更改文本,并且它会以正确的宽度动态加下划线。
我尝试了很多选择,但我找不到如何去做。我也检查了这个问题,但似乎不是同一个问题。
我尝试使用以下代码禁用 UITests 中的动画:
let app = XCUIApplication()
app.launchEnvironment = ["DISABLE_ANIMATIONS": "1"]
Run Code Online (Sandbox Code Playgroud)
我也试过:
UIView.setAnimationsEnabled(false)
Run Code Online (Sandbox Code Playgroud)
但是当我在模拟器上运行 UITests 时它不会禁用动画。
是因为我使用的是 SwiftUI 吗?
我想禁用的动画是从一个 SwiftUI 视图到另一个视图的视图转换。以下是我对转换进行编码的方式:
NavigationLink(destination: MapView(), isActive: $viewModel.isDataLoaded) {
EmptyView()
}
Run Code Online (Sandbox Code Playgroud)
使用 SwiftUI 时,是否有另一种方法可以在 UITests 中禁用动画?
我想通过写入来访问swift 4.1中的视图子层:
for layer : CALayer in myView.layer.sublayers {
// Code
}
Run Code Online (Sandbox Code Playgroud)
但得到错误:
输入'[CALayer]?' 不符合协议'序列'
这是否意味着CALayerfor循环无法访问?
在 Swift 中列出 iOS 应用程序的可用语言的最简单方法是什么?
这是我想做的:
let availableLanguages: [String] = ?
let currentLanguage = Locale.current.languageCode
if !availableLanguages.contains(currentLanguage) {
UserDefaults.standard.set("en", forKey: "AppleLanguage")
}
Run Code Online (Sandbox Code Playgroud)
我想替换“?” 用最干净的解决方案。
我所说的可用是指应用程序具有 Localized.string 的语言