SwiftUI 中的 textarea 相当于什么?我可以在其中输入多行文本。并指定该区域的大小?HTML 示例在这里: https: //www.w3schools.com/tags/tryit.asp ?filename=tryhtml_textarea 我已经搜索了很多,但没有任何运气。
我尝试在 SwiftUI 中使用 TextField,但如果用户编写长文本,文本就会超出屏幕。
TextField("notes")
.background(Color.yellow)
.lineLimit(3)
Run Code Online (Sandbox Code Playgroud) 我的第一个视图中有一个加号按钮。看起来像一个 FAB 按钮。我想在点击包含在 NavigationLink 中的某个步骤后隐藏它。到目前为止,我有这样的事情:
ForEach(0 ..< 12) {item in
NavigationLink(destination: TransactionsDetailsView()) {
VStack {
HStack(alignment: .top) {
Text("List item")
}
.padding(EdgeInsets(top: 5, leading: 10, bottom: 5, trailing: 10))
.foregroundColor(.black)
Divider()
}
}
.simultaneousGesture(TapGesture().onEnded{
self.showPlusButton = false
})
.onAppear(){
self.showPlusButton = true
}
}
Run Code Online (Sandbox Code Playgroud)
单击即可正常工作。但是当我长按 NavigationLink 时它不起作用。我应该如何重写我的代码以包括长按?或者我应该让它的工作方式与使用 concurrentGesture 不同?
我有一个带有变量的 ChildView:
@Binding var itemName: String
Run Code Online (Sandbox Code Playgroud)
在这个 ChildView 中,我有几个按钮可以改变变量的值:
Button(action: {
self.itemName = "different value"
})
Run Code Online (Sandbox Code Playgroud)
我试图像这样使用预览:
struct ChildView_Previews: PreviewProvider {
static var previews: some View {
ChildView(itemName: "test")
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
无法将“字符串”类型的值转换为预期的参数类型“绑定”
我知道我可以像下面这样使用预览。并且错误将消失并且预览将起作用,但是... itemName 将具有恒定值,它现在不可变,在实时预览中不可交互:
struct ChildView_Previews: PreviewProvider {
static var previews: some View {
ChildView(itemName: .constant("test"))
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 SwiftUI Preview 中声明绑定以使其具有交互性?
在我的 SwiftUI 应用程序的几个屏幕上,我在几个元素之间使用 Divider()。此分隔线呈现为非常细的灰色(或黑色?)线。我猜1分。如何更改 Divider() 的宽度?
问题: 如何重置 Xcode 的预览画布?具体来说,如何删除在Canvas实时预览中创建的所有Canvas核心数据?
示例代码: 这是我用于 Canvas 预览的 SwiftUI 预览代码。
struct ItemView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
//Test data
let testItem = Item.init(context: context)
testItem.name = "Abc"
return ItemView(filter: false)
.environment(\.managedObjectContext, context)
}
}
Run Code Online (Sandbox Code Playgroud)
通过此代码,Canvas 向我显示了 testItem,而且还显示了在实时预览中创建的 Core Data 对象的 item.name。我想删除画布数据以看不到以前创建的对象。
我尝试过的事情: Xcode - 产品 > 清理构建文件夹 Xcode - 编辑器 > 画布 > 刷新画布模拟器 - 设备 > 删除所有内容和设置...
最后一项按模拟器的预期工作。我希望它也能删除 Canvas 数据,但事实并非如此。
--
完整的工作示例:
内容视图.swift
import SwiftUI
import CoreData
struct ContentView: View …Run Code Online (Sandbox Code Playgroud) 如何在 SwiftUI 中制作多选列表?我知道我可以像这样定制一个: https: //stackoverflow.com/a/57023746/12315994
但是 SwiftUI 中已经有默认的了吗?
以下是 Apple 邮件应用程序中的多选控件示例:
当您选择多张照片时,Apple Photos 中也会使用相同的控件。这些控件也位于 Apple 官方 iOS Sketch 库中,您可以从此处下载: https: //developer.apple.com/design/resources/
苹果的提醒应用程序中有非常相似的控件:
如何在没有子视图的列表中只更改一个开关?如果我从 ForEach 中的所有内容中提取 Subview,我知道如何使其工作,但是如何在一个视图上执行此操作?
我不能使用子视图,因为如果我想从这个子视图中删除一个项目,我以后会遇到问题。它给了我一些我不知道如何修复的错误,所以我试图在没有这个错误的一个视图中进行。
该列表的代码非常简单:
import SwiftUI
struct ContentView: View {
@Environment(\.managedObjectContext) var moc
var fetchRequest: FetchRequest<Item>
var items: FetchedResults<Item> { fetchRequest.wrappedValue }
@State private var doneStatus : Bool = false
var body: some View {
NavigationView {
List {
ForEach(items, id: \.self) {item in
HStack {
Text("\(item.name ?? "default item name")")
Spacer()
Toggle(isOn: self.$doneStatus) {
Text("Done")
}
.labelsHidden()
.onAppear {
self.doneStatus = item.done
}
.onTapGesture {
self.doneStatus.toggle()
item.done.toggle()
try? self.moc.save()
}
}
}
.onDelete(perform: removeItem)
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 iOS 上使用 SwiftUI 制作菜单。
如果打开菜单的按钮是居中对齐的,我希望菜单也能居中对齐。无论按钮中使用的图标或文本如何。怎么做?
奇怪的是菜单的对齐方式根据按钮的内容而变化。如果我使用一个图标,它会按预期居中对齐。但如果我使用另一个图标,它是左对齐的。
这是我的代码:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
VStack {
Text("Some text.")
}
VStack(alignment: .center) {
Spacer()
Menu {
Button(action: {}) {
Label("Menu item", systemImage: "star")
}
Button(action: {}) {
Label("Menu item", systemImage: "star")
}
} label: {
Image(systemName: "plus") // left-aligned menu
// Image(systemName: "line.horizontal.3") // center-aligned menu
.foregroundColor(Color.white)
.padding()
.background(Color.accentColor)
.clipShape(Rectangle())
}
}
}
.navigationTitle("Content")
}
}
}
struct ContentView_Previews: PreviewProvider {
static …Run Code Online (Sandbox Code Playgroud) 这是一个简单的例子。您可以创建新的 SwiftUI iOS 项目并将其复制到 ContentView 文件。
import SwiftUI
struct Settings {
static let onOff = "onOff"
}
struct ContentView: View {
@AppStorage(wrappedValue: false, Settings.onOff) var onOff
var body: some View {
NavigationView {
GeometryReader { reader in // < Comment out this line
List {
Section (header:
VStack {
HStack {
Spacer()
VStack {
Text("THIS SHOULD BE FULL-WIDTH")
Text("It is thanks to GeometryReader")
}
Spacer()
}
.padding()
.background(Color.yellow)
HStack {
Text("This should update from AppStorage: ")
Spacer()
Text(onOff == true …Run Code Online (Sandbox Code Playgroud) 我想在 App Store 上发布我的第一个 iOS 应用程序。我想只做iOS。没有在 iPad 和 Mac 上下载和运行的选项。
\n然而,TestFlight 在 iPad 和 Mac 上向我展示了这个应用程序。
\n当我在 Target\xe2\x80\x99s 部署信息中专门禁用 iPad 时,为什么我可以在 iPad 上测试我的 iOS 应用程序?如何禁用它?如何防止应用程序分发到iPad和Mac?
\n部署信息仅设置为 iPhone。在 App Store Connect 上,我没有添加 macOS 应用程序。然而,它仍然可以在 TestFlight 中使用,并且在兼容性下显示:iPhone、iPad、macOS。
\n\nswiftui ×9
ios ×5
swift ×5
xcode ×3
core-data ×2
alignment ×1
app-store ×1
appstorage ×1
canvas ×1
foreach ×1
list ×1
menu ×1
multi-select ×1
testflight ×1
toggle ×1