小编Zou*_*ssi的帖子

ObjectBinding和EnvironmentObject有什么区别?

当我们具有@Binding属性包装器时,@EnvironmentObject的用途是什么?我在弄清楚为什么需要@EnvironmentObject时遇到麻烦。我看了看这些发布内容,但与我在SwiftUI中 寻找 EnvironmentObject的内容不完全相同。如何使用BindableObjects(EnviromentObject)?

我还查看了他们的文档,这些文档太薄了。 https://developer.apple.com/documentation/swiftui/environmentobject

ios swift swiftui

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

Firebase 动态链接未在开发应用中打开,而应用不在应用商店中

我担心的是我没有在应用商店上传,但是当我点击深度链接 url 调试模式应用程序没有在 Appstore 上打开它的重定向

我是 ABLR 来重定向我的调试应用程序。

我正在研究动态链接目标 c

因为我已经测试过我的应用程序在 firebase 中配置良好

但是当我与其他用户分享我的产品时,他们点击了它在 safari 上的重定向并且链接不起作用

每次我必须将链接和过去复制到 chrome 中,而且在这里弹出你的应用程序打开另一个应用程序然后重定向到应用程序...

我希望当我点击链接时直接重定向到应用程序而不是 SAFARI 或手动复制该链接然后打开应用程序

注意:应用程序不可用,我想打开我的调试应用程序的 url。

我已经配置了获取 appstoreid 和 teamid 的应用程序

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restoreHandler:

我的链接在 safari 中不起作用,但它在 chrome 上工作如何管理在 safari 上工作......

提前致谢。

objective-c ios firebase firebase-authentication firebase-dynamic-links

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

是否可以在 SwiftUI 中将枚举“映射”到 Binding<Bool>?

与工作MVVM在SwifUI。我的目标是拥有一个enum国家财产,ViewModel以便View可以根据国家财产自行调整。美国可能是:idlebusydoneerror。Ondone我想使用 导航到另一个屏幕NavigationLink,但问题是它期待 aBinding<Bool>并且我无法想出一种方法将我的枚举状态映射到 bool。

这是简化的代码:

struct LoginView: View {

    @ObservedObject private var viewModel: LoginViewModel

    @ViewBuilder
    var body: some View {
        ...
        // success state
        NavigationLink(destination: HomeFactory().make(), isActive: self.$viewModel.state /* <---- some sort of mapping should come here */){ EmptyView() }
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

希望我错过了一些非常基本的东西,并且可以以优雅的方式轻松实现。

编辑:

似乎应该可以使用下一个方法:
NavigationLink(destination: HomeFactory().make(), tag: .done, selection: self.$viewModel.viewState, label: { EmptyView() })

但是我收到一个错误,我无法弄清楚出了什么问题: Cannot …

ios swift swiftui

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

在Xcode 11.2中的SwiftUI中的TextField上展开可单击区域

无法弄清楚如何增大可单击区域以在swiftUI(iOS 13,Xcode 11.2)上打开键盘。我只能影响视觉外观,而不能影响用户可以单击的实际区域(可单击区域==,无论占位符文本的fontSize是什么。)

在swiftUI中创建TextField时,可以使用frame()来增加占位符文本的大小,我也可以使用fontsize来使框内的字体变大,但是没有任何事情可以使可点击区域(弹出键盘)变大而没有使字体变大大得多。

//用于修改TextField的代码

struct SignInModifier: ViewModifier {

func body(content: Content) -> some View {
    return content
        .padding(.all).font(.system(size: 18)).border(Color.purple).foregroundColor(Color.purple).shadow(radius: 2).frame(width: 350, height: 50)
    }
}
Run Code Online (Sandbox Code Playgroud)

//我叫修饰符的地方

TextField("email address", text: $email).modifier(SignInModifier()).disableAutocorrection(true).keyboardType(.emailAddress)
Run Code Online (Sandbox Code Playgroud)

如果您在框架内的任何位置单击时,键盘都已打开/您能够在textField中键入内容,我就想这样做。但是,我只需要单击占位符文本的上部才能键入TextField。

textfield ios swift swiftui

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

基于 SwiftUI 中该视图内的 GeometryReader 设置视图框架

作为我学习新技术的努力的一部分,我正在尝试在 SwiftUI 中实现我正在开发的应用程序的屏幕之一。我有这个粗略的布局:

在此处输入图片说明

此元素应拉伸以适应容器大小(不同宽度的设备),并将在 ScrollView 中使用。

这是我在一些绊脚石后想出的初步解决方案:

在此处输入图片说明

这对于第一次尝试来说效果很好,但我想通过将所有相关部分移动到一个单独的视图中来重构视图。除此之外,我希望新视图能够自动考虑我稍后可能添加的填充和其他大小修改。

所以,这是一个天真的重写:

在此处输入图片说明

正如您很容易发现的那样,ScrollView 中的 GeometryReader 假定父级提供的大小,有效地隐藏了大部分 View。

这种情况有几种“肮脏”的解决方案:为 View 设置一个固定的框架高度,设置一个接近正确大小的纵横比(考虑到有固定高度的 Text 视图,这有点棘手),保持 GeometryReader 作为最外层主视图的元素并将宽度作为初始化参数传递给子视图。

我正在为这个特定的布局寻找一个“干净”的解决方案,也许是为了更全面地了解 Views 是如何 SwiftUI 调节它们的大小的——在 WWDC 视频中,据说父 View 提出了一个大小,但随后子 View 返回了它自己的尺寸;有没有办法以某种方式干预该过程,还是全部通过私有 API 完成?

谢谢!

–巴格兰

ps 我认为除了 UI 预览之外的代码截图是最能说明问题的,但如果我也应该提供代码片段,请告诉我!

ios swift swiftui

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

多次调用(在实际设备上)iOS 13 时,QLThumbnailGenerator 开始失败

我试图通过在特定文件夹中的所有(大约 200 个)通行证上运行循环并为每个通行证调用generateBestRepresentation(for:) 来创建多个钱包通行证(.pkpass)的缩略图。

\n\n

这是代码:

\n\n
let passesDirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("Passes")\nlet size = CGSize(width: 1600, height: 1600)\nlet scale = UIScreen.main.scale\n\nif let passURLs = try? FileManager.default.contentsOfDirectory(\n    at: self.passesDirURL,\n    includingPropertiesForKeys: nil,\n    options: .skipsHiddenFiles\n    ),\n   !passURLs.isEmpty {\n    for passURL in passURLs {\n        // Create the thumbnail request.\n        let request = QLThumbnailGenerator.Request(\n            fileAt: passURL,\n            size: size,\n            scale: scale,\n            representationTypes: .thumbnail\n        )\n\n        // Retrieve the singleton instance of the thumbnail generator and generate the thumbnails.\n        let generator = QLThumbnailGenerator.shared\n        generator.generateBestRepresentation(for: request) { …
Run Code Online (Sandbox Code Playgroud)

ios swift ios13

5
推荐指数
0
解决办法
653
查看次数

在 swift 4 中将文本放入 UISwitch

经过2天的尝试,我在这里发布了这个问题。我需要实现这一目标在此处输入图片说明

在 swift 4. 我试过如下:-

let switchOnOff = UISwitch(frame:CGRect(x: 150, y: 150, width: 200, height: 0))

    switchOnOff.addTarget(self, action: #selector(self.switchStateDidChange), for: .valueChanged)
    switchOnOff.setOn(true, animated: false)
    self.view.addSubview(switchOnOff) 


 @objc func switchStateDidChange(sender:UISwitch){
    if (sender.isOn == true){
        sender.setOn(true, animated: false)
        //sender.onImage = UIImage(named: "edit.png")
    }
    else{

        sender.setOn(false, animated: false)
        //sender.offImage = UIImage(named: "offSwitch.png")


    }
}
Run Code Online (Sandbox Code Playgroud)

sender.onImage 、 sender.offImage 在这个 ios 10+ 版本中不起作用。然后我尝试使用sender.tagsender.text

这些也不起作用。在谷歌搜索中没有得到任何适当的帮助。所以如果你已经解决了这个问题,请帮助我。

谢谢你们。

ios swift

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

如何在SwiftUI视图上使用Combine

这个问题与此有关:如何使用SwiftUI和Combine观察TextField的值?

但是我要问的是比较笼统的。这是我的代码:

struct MyPropertyStruct {
    var text: String
}

class TestModel : ObservableObject {
    @Published var myproperty = MyPropertyStruct(text: "initialText")

    func saveTextToFile(text: String) {
        print("this function saves text to file")
    }
}

struct ContentView: View {
    @ObservedObject var testModel = TestModel()
    var body: some View {
        TextField("", text: $testModel.myproperty.text)
    }
}
Run Code Online (Sandbox Code Playgroud)

场景:随着用户在文本字段中键入内容,应该调用saveTextToFile函数。由于这是保存到文件,因此应放慢/限制它。

所以我的问题是:

  1. 将合并操作放在下面的代码中的适当位置在哪里。
  2. 我要完成什么组合代码:(A)字符串不能包含空格。(B)字符串必须为5个字符长。(C)弦必须去抖动/掉线

我想在这里使用响应作为一种通用模式:我们应该如何处理SwiftUI应用程序(而非UIKit应用程序)中的组合内容。

ios swift swiftui

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

SwiftUI 根据计算属性显示警报

我正在尝试根据计算属性在 Swift 中显示警报。基本上,每当用户单击按钮时,“round”的值就会更新。当进行超过 10 轮时,会显示警报。

为此,我创建了一个名为“showingAlert”的布尔变量。这必须是一个 @State var,以便当用户关闭警报时它会再次设置为 false。

但是,编译器告诉我像 @State 这样的属性包装器“不能应用于计算属性”:-(

这是我尝试过的代码:


@State var round = 0
@State var showingAlert:Bool {round > 10 ? true : false}

func result(player: Int, app: Int) {
if player > app {
 round += 1
 }
else {
 round += 1
}
}

var body: some View {
        Button(action: {self.result(player: 1, app: 1)}) {
        Text("Button")
        }
           .alert(isPresented: $showingAlert) {
                Alert(title: Text("title"), message: Text("message"), dismissButton: .default(Text("Continue"))
                )
} 
Run Code Online (Sandbox Code Playgroud)

有什么办法解决这个问题吗?我很想创建一个不显示错误消息的警报。

ios property-binding swift computed-properties swiftui

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

如何从本地文件创建缩略图

我想为文件(word、excel、video ....)创建一个缩略图图像,这是我所做的:

import QuickLook

class ThumbsCreator:  NSObject {

    private var file : File?

    init(file: File?) {
        super.init()
        self.file = file
    }

    func createThumb() {
     let url = URL(string: (self.file?.path()))
 }  
Run Code Online (Sandbox Code Playgroud)

xcode swift

3
推荐指数
2
解决办法
2501
查看次数