草庐IT

$SwiftUI

全部标签

swift - 在 SwiftUI 中将 View 声明为 View 主体内的变量时出现 "Function declares an opaque return type [...]"错误

假设我有一个View,其中的Image具有shadow属性:structContentView:View{varbody:someView{Image("turtlerock").shadow(radius:10)}}现在假设我想访问阴影半径的值。我以为我可以做到这一点:structContentView:View{varbody:someView{letmyImage=Image("turtlerock").shadow(radius:10)print(myImage.modifier.radius)}}但是,这会返回一个错误:Functiondeclaresanopaqueretu

swift - 在 SwiftUI 中有条件地使用 View

我正在尝试找出使用swiftui有条件地包含View的正确方法。我无法直接在View中使用if并且不得不使用堆栈View来做到这一点。这可行,但似乎会有更简洁的方法。varbody:someView{HStack(){ifkeychain.get("api-key")!=nil{TabView()}else{LoginView()}}} 最佳答案 避免使用像HStack这样的额外容器的最简单方法是将body属性注释为@ViewBuilder,如下所示:@ViewBuildervarbody:someView{ifuser.isLog

ios - 在 SwiftUI 中删除列表下方的额外行分隔符

我创建了一个简单的List,如下所示,但它下面有额外的分隔符。List{Text("Item1")Text("Item2")Text("Item3")}结果:我试过将列表嵌入VStack并添加Spacer()如下代码,但它无法正常工作。它删除了大约一半的空单元格。VStack{List{Text("Item1")Text("Item2")Text("Item3")}Spacer()}如何在SwiftUI中删除这些额外的分隔符? 最佳答案 iOS14:iOS14默认不在列表下方显示额外的分隔符,要删除所有分隔符,您需要在里面使用Laz

ios - Text.lineLimit() 行为在 SwiftUI 中不一致

我在VStack中有一些描述文本,我想将其限制为3行。我的理解是我用.lineLimit(3)修饰符修改了Text()。但是,当我这样做时,一些描述的上限为3行,而其他描述的上限为1。关于发生这种情况的地方似乎没有任何一致性。我认为这可能是我调用修饰符属性的顺序,但切换.font(.body)和.lineLimit的顺序不会不要改变任何东西。我还尝试删除.padding(),但这也不起作用。List(clubData){clubinVStack(alignment:.leading){Text(club.name).font(.title).lineLimit(nil)Text(clu

SwiftUI:如何使用@Binding 变量实现自定义初始化

我正在处理金钱输入屏幕,需要实现自定义init根据初始化数量设置状态变量。我认为这会起作用,但我收到一个编译器错误:Cannotassignvalueoftype'Binding'totype'Double'structAmountView:View{@Bindingvaramount:Double@StatevarincludeDecimal=falseinit(amount:Binding){self.amount=amountself.includeDecimal=round(amount)-amount>0}...} 最佳答案

ios - 当键盘出现在 SwiftUI 中时向上移动 TextField

我的主ContentView中有七个TextField。当用户打开键盘时,一些TextField会隐藏在键盘框架下。所以我想在键盘出现时分别向上移动所有TextField。我使用下面的代码在屏幕上添加了TextField。structContentView:View{@StatevartextfieldText:String=""varbody:someView{VStack{TextField($textfieldText,placeholder:Text("TextField1"))TextField($textfieldText,placeholder:Text("TextFie

ios - 在 SwiftUI 中让 VStack 填满屏幕宽度

给定这段代码:importSwiftUIstructContentView:View{varbody:someView{VStack(alignment:.leading){Text("Title").font(.title)Text("Content").lineLimit(nil).font(.body)Spacer()}.background(Color.red)}}#ifDEBUGstructContentView_Previews:PreviewProvider{staticvarpreviews:someView{ContentView()}}#endif它的结果是这个界面

ios - SwiftUI - 列表行中的多个按钮

假设我有一个List和一行中的两个按钮,我如何在不突出显示整行的情况下区分点击了哪个按钮?对于此示例代码,当点击行中的任何一个按钮时,都会调用两个按钮的操作回调。//asimplelistwithjustonerowList{//bothbuttonsinaHStacksothattheyappearinasinglerowHStack{Button{print("button1tapped")}label:{Text("One")}Button{print("button2tapped")}label:{Text("Two")}}}当只有一个按钮被点击一次时,我看到两个按钮的回调被调

ios - 如何在 SwiftUI 中打开 ImagePicker?

我需要使用SwiftUI在我的应用程序中打开一个图像选择器,我该怎么做?我考虑过使用UIImagePickerController,但我不知道如何在SwiftUI中执行此操作。 最佳答案 您需要将UIImagePickerController包装在实现UIViewControllerRepresentable的结构中。有关UIViewControllerRepresentable的更多信息,请查看这个精彩的WWDC2019演讲:IntegratingSwiftUIstructImagePicker:UIViewControllerR

SwiftUI Beta 3 黑屏

我刚刚转换到beta3,我以前工作的SwiftUI代码现在呈现纯黑屏幕。Beta3中是否存在导致此问题的变化。有解决办法吗?场景委托(delegate)代码:funcscene(_scene:UIScene,willConnectTosession:UISceneSession,optionsconnectionOptions:UIScene.ConnectionOptions){//UsethismethodtooptionallyconfigureandattachtheUIWindow`window`totheprovidedUIWindowScene`scene`.//Ifus