我在 Stack Overflow 上看到过类似的问题,但没有一个能够回答我的问题。
我已经创建了一个List,但我想删除 中内容上方的填充空间(用红色箭头标记)List。使用时如何删除它GroupedListStyle?
这是通过以下方式显示的ainainaList中的ainaina :VStackNavigationViewfullscreenCover
var body: some View {
NavigationView {
VStack {
taskEventPicker
myList
}
.navigationBarTitle("Add Task", displayMode: .inline)
}
}
Run Code Online (Sandbox Code Playgroud)
其中taskEventPicker是分段Picker(绿色框内):
var taskEventPicker: some View {
Picker("Mode", selection: $selection) { /* ... */ }
.pickerStyle(SegmentedPickerStyle())
.padding()
}
Run Code Online (Sandbox Code Playgroud)
是myList有问题的表格(黄色框内):
var myList: some View {
List { /* ... */ }
.listStyle(GroupedListStyle())
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的
SwiftUI随着iOS 16 的新更新List,不再依赖UITableView. 因此,我们用来设置List背景颜色的以下代码片段.clear现在毫无用处:
UITableView.appearance().backgroundColor = .clear
Run Code Online (Sandbox Code Playgroud)
我看到有人曾经introspect解决过这个问题,但是有人知道另一种可能更干净的方法来实现相同的行为吗?
另请注意,在 上macOS,以下工作正常(使用Xcode 14 beta&测试macOS Ventura):
extension NSTableView {
open override func viewDidMoveToWindow() {
super.viewDidMoveToWindow()
backgroundColor = NSColor.clear
enclosingScrollView!.drawsBackground = false
}
}
Run Code Online (Sandbox Code Playgroud) 创建一个列表如下:
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Header")) {
Text("Row 1")
Text("Row 2")
}
}
.listStyle(PlainListStyle())
}
}
Run Code Online (Sandbox Code Playgroud)
在节标题中使用大写文本。
有没有办法强制标题文本保留其原始大小写?
自 iOS 14 更新以来,我遇到了 NavigationView 中的 List 问题。
这是代码的简单细分 - 我已经将所有未显示问题的内容都进行了条带化
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果:
我无法弄清楚为什么列表会像那样悬停在导航视图的中心。据我所知,这应该会生成一个占据所有可用空间的列表视图(导航栏所在的顶部除外)。
事实上,当在 iOS 13.5 上运行时,我得到的结果如下图所示:
我已经通读了文档,但无法弄清楚为什么会突然发生这种行为。
任何帮助将不胜感激。
谢谢
这是 iOS 13 Health 应用程序的屏幕截图 - 用户个人资料。我最近开始使用swiftui并想知道如何开发如下所示的屏幕。我尝试了简单和分组的列表样式。但我无法看到下面的布局。
这样的 UI 可以纯粹使用swiftui-list 开发吗?
当我们使用 SwiftUI List 组件并需要一个节标题时,顶部填充将出现在每个节的标题上。
iOS15下,我们用它UITableView.appearance().sectionHeaderTopPadding = 0来解决这个问题。查看附件iOS15&Xcode14构建截图。
但在iOS16中,这个设置似乎不起作用。查看附件iOS16&Xcode14构建截图,滚动时:iOS16&Xcode14构建滚动。
所以,我的问题是如何在iOS16中删除节标题顶部填充,并且当滚动列表时,其节标题将被固定,就像附件iOS15&Xcode14构建滚动一样。
从iOS16开始,SwiftUI List组件似乎使用UICollectionView而不是UITableView,所以我尝试通过全局设置UICollectionView的section top padding来解决这个问题。不幸的是,我没有找到设置 UICollectionView 的部分顶部填充的方法。
我的代码如下。
//
// ContentView.swift
// ListIniOS16
//
// Created by Eric on 2022/07/23.
//
import SwiftUI
struct ContentView: View {
@State private var collections: [ListData] = ListData.collection
init() {
let appBarTheme = UINavigationBarAppearance()
appBarTheme.configureWithOpaqueBackground()
appBarTheme.backgroundColor = UIColor(.gray)
UINavigationBar.appearance().standardAppearance = appBarTheme
UINavigationBar.appearance().scrollEdgeAppearance = appBarTheme
if #available(iOS 15.0, *) {
// can fix sectionHeaderTopPadding issue in iOS15, …Run Code Online (Sandbox Code Playgroud) 我的问题是我(在 SwiftUI 中)有一个 ScrollView,里面有一个 foreach。知道 foreach 何时加载我的所有条目,我希望最后一个条目得到关注。
我做了一些谷歌研究,但我没有找到任何答案。
ScrollView {
VStack {
ForEach (0..<self.entries.count) { index in
Group {
Text(self.entries[index].getName())
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个部分和行的导航列表。我选择一行 foo,它导航到我想要的视图。但是,当我返回根视图时,无法选择行 foo。我点击行 foo 并没有任何反应。
我点击行栏,该行将我发送到它的视图。回到根视图。然后我无法选择行栏,但现在行 foo 有效。
这是 SwiftUI 中的错误还是设计行为?当我离开视图时,我需要做些什么来重置视图?
NavigationView {
List {
Section(header: shoppingListData.lastItemSection.sectionHeader, footer: shoppingListData.lastItemSection.sectionFooter) {
ForEach(0..<shoppingListData.lastItemSection.sectionRows.count) { index in
ShoppingItemRow(shoppingListData: self.shoppingListData,
rowItem: self.shoppingListData.lastItemSection.sectionRows[index])
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个具有相同问题的案例。我只能选择表单的选择器行一次。如果我回到根视图,然后又回到这个视图,我可以再次选择选择器。
如果我将pickerStyle 设置为SegmentedPickerStyle(),我可以多次选择它。
struct ShoppingItemPage: View {
@ObservedObject var shoppingListData: ShoppingListData
@ObservedObject var shoppingItem: ShoppingItems
var body: some View {
Form {
Section(header: Text("Packages")) {
HStack {
Text("Quantity (\(shoppingItem.myUnit.myName))")
TextField("Quantity (\(shoppingItem.myUnit.myName))", value: $shoppingItem.stdQty, formatter: basicFormat)
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.numbersAndPunctuation)
Toggle("Need", isOn: $shoppingItem.needed)
}
HStack {
Text("Item Name")
TextField("Item Name", text: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 SwiftUI 应用程序,首先出现警告,然后出现错误,可能是因为我忽略了这些警告。我想展示我收到的警告,希望有人能指出我可能做错的事情。
这是相关代码:
struct CustomListView: View {
var localList:[SomeManagedObject], moc:NSManagedObjectContext
@State var showingOtherView = false
func handleCustomItem(_ argument: SomeManagedObject) {
print(#function)
self.showingOtherView.toggle()
..... Do useful things .....
}
var body: some View {
List {
ForEach(self.localList) {
item in
HStack {
Spacer()
Button(action: {
self.handleCustomItem(item)
})
{
Text(item.expression!)
.foregroundColor(Color.red))
.font(.headline)
.padding(.horizontal, 11).padding(.vertical, 15)
}.sheet(isPresented: $showingOtherView) {
OtherView()
}
Spacer()
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是OtherView的代码:
import SwiftUI
import CoreData
struct OtherView: View {
var body: some View {
Text("Hello …Run Code Online (Sandbox Code Playgroud) 我在 xcode 12 中创建了一个项目并添加了一个小部件扩展目标。目标已创建,我只剩下一个显示时间的简单小部件。小部件的预览按预期工作,小部件在模拟器中按预期显示。但是,如果我将视图更改为使用List而不是Text,如下所示:
struct SimpleWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
List {
Text("Something")
}
}
}
Run Code Online (Sandbox Code Playgroud)
预览和模拟器都在黄色背景上显示红色禁止进入标志:
我试过把List里面 aVStack和使用动态列表没有任何成功。我找不到任何关于List在小部件中被禁止的文档。我试过重新启动 xcode 和模拟器,清理和重建。我正在使用 xcode 12.0 beta 3。
~我UIView在尝试使用包装在UIViewRepresentable. 该视图LineChartView来自 Charts 库。~ 编辑:根据Apple 开发者论坛上的这篇文章,不可能在 WidgetKit 小部件中使用 UIKit 视图。
有谁知道我如何List在小部件中使用 a ?非常感谢任何帮助。谢谢