小编nel*_*LLA的帖子

SwiftUI 扩展列表动画在 iOS 16.4 上损坏

我构建了一个 SwiftUI 扩展列表,如本文所示。

这是我的实现:

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.1 上的列表

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

iOS 16.4 上的列表

这是操作系统级别的错误还是我应该使用其他技术?

swiftui swiftui-list ios16.4

9
推荐指数
1
解决办法
516
查看次数

如何使用 SwiftUI 获取文本宽度?

我想用一个与文本具有相同宽度的矩形在标题下划线。

首先,我创建一个带下划线的文本,如下所示:

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)

通过这样做,我可以更改文本,并且它会以正确的宽度动态加下划线。

我尝试了很多选择,但我找不到如何去做。我也检查了这个问题,但似乎不是同一个问题。

xcode ios swiftui

7
推荐指数
1
解决办法
3419
查看次数

如何在 UITests 中禁用 SwiftUI 动画?

我尝试使用以下代码禁用 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 中禁用动画?

xcode uitest swiftui

6
推荐指数
1
解决办法
208
查看次数

如何在swift中访问视图子图层

我想通过写入来访问swift 4.1中的视图子层:

for layer : CALayer in myView.layer.sublayers {
         // Code
}
Run Code Online (Sandbox Code Playgroud)

但得到错误:

输入'[CALayer]?' 不符合协议'序列'

这是否意味着CALayerfor循环无法访问?

calayer ios swift

2
推荐指数
1
解决办法
1148
查看次数

快速列出 iOS 应用程序的可用语言

在 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 的语言

ios swift

1
推荐指数
1
解决办法
2885
查看次数

标签 统计

ios ×3

swiftui ×3

swift ×2

xcode ×2

calayer ×1

ios16.4 ×1

swiftui-list ×1

uitest ×1