小编Lor*_*bis的帖子

SwiftUI 2 - 如何防止顶部部分在 macOS 和 iPadOS 中的列表中关闭

在 SwiftUI 2 导航栏中,我有一个包含多个部分的列表。所有部分都有一个标题,但是我希望顶部部分永远不会被关闭并且元素永远不会被隐藏。这仅要求第一个标题,并且还希望显示指示符/折叠符号消失或隐藏。

这可以在 SwiftUI 2 中完成吗? 我想让它在 macOS 和 iPadOS 中工作。

@State var agendaViews: [String] = ["Agenda", "Client", "Next Client"]
@State var treatmentViews: [String] = ["Treatment", "Products", "Merchandising"]
@State var selectionAgenda: String?

var body: some View {
    NavigationView {
        VStack {
            List(selection: $selectionAgenda) {
                Section(header: ListHeader()) {    // <<<<<<< For this section no Close Icon and No way to close this section.
                    ForEach(agendaViews, id: \.self) { string in
                        NavigationLink(destination: DetailsView(test: string)) {
                            Text(string)
                        }
                    }
                }
                Section(header: ListHeader2(), …
Run Code Online (Sandbox Code Playgroud)

macos swiftui ipados

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

URLSessionWebSocketTask - 使用客户端 pong 对来自服务器的 ping 进行响应

我使用Apple提供的URLSessionWebSocketTask来设置websocket。我接收、发送消息并且可以发送 ping。但是我应该如何接收和响应来自 ws 服务器的 ping?我必须使用向客户端发送 ping 的服务器来检查它们是否仍然存在。
如果我从服务器收到某些信息,我如何识别来自该服务器的 ping?收到的消息中是否有一些密钥代码?

func receive() {
    webSocketTask.receive { result in
        print(result)
        switch result {
        case .failure(let error):
                print("Failed to receive message: \(error)")
                ....
        case .success(let message):
            switch message {
            case .data(let data):
                print("\(data)")
                ....
            case .string(let text):
                print("\(text)")
                .....

            @unknown default:
                fatalError()
            }
        }
        receive()
    }
}
Run Code Online (Sandbox Code Playgroud)

上面当然是一段常见的代码,但是我应该实现什么来响应来自连接服务器的 ping ?我确实阅读了几个文档,但找不到任何内容、任何指示或建议。

我确实找到了以下 OpCode0x90xA. 那些是“乒”和“乒”吗?我可以发送 a 0x9as ping 和 for pong a吗0xA?如果我尝试将此作为短信,但没有得到任何反应。应该是一个框架吗?那么我到底做错了什么?

ping websocket swift

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

在 SwiftUI 中,如何确定 Circle() 的大小以使用该圆按比例绘制叠加层?

Target 的 iOS 和 macOS 也是如此。

我有这个非常通用的代码来绘制一个Image和一些文本:

    let dynamicScale = 1.2 // here just static but will be !!calculated!!
    ... 
    VStack (alignment: .leading){
            Image(user.imageName)
                .resizable()
                .frame(width: 60, height: 60)
                .clipped()
                .clipShape(Circle())
                .overlay(Circle()
                    .scale(dynamicScale) // with some calculation
                    .stroke(Color.red, lineWidth: 2))


            Text(user.username).font(.headline)
            Text(user.message).font(.subheadline)
            }.padding(.init(top: 10, leading: 5, bottom: 10, trailing: 5))
    }
Run Code Online (Sandbox Code Playgroud)

现在大小是静态的,但稍后,它的大小将取决于屏幕大小和旋转。那么笔画是否取决于它,大小和更多设置。如何在 SwiftUI 中动态获取circle size( frame),以便我可以使用它在图像的偏移处绘制第二个 Circle() 笔划/边框。我想.scale(dynamicScale)根据图像的大小动态计算

据我所知,我无法插入任何 Swift 代码来读取该大小,例如“let size = Image().frame.width”。逻辑上,那里还没有值。

有人有一些建议吗?

geometry overlay swiftui

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

标签 统计

swiftui ×2

geometry ×1

ipados ×1

macos ×1

overlay ×1

ping ×1

swift ×1

websocket ×1