小编JWK*_*JWK的帖子

SwiftUI:使用资产目录中的颜色集

在SwiftUI中,我们可以使用以下方法从资产目录中的颜色集中获取颜色:

extension Color {
  static let coral = Color("coral")
}
Run Code Online (Sandbox Code Playgroud)

这需要字符串类型的名称,并且在使用许多颜色集时变得非常乏味。还有另一种获取颜色集的方法,类似于使用图像文字从资产目录中获取图像的方法吗?或者,只是少一些多余的东西。

如果没有,如何在SwiftUI中以编程方式创建动态颜色?例如,这是在UIKit中完成的方式:

extension UIColor {
    static let dynamicColor = UIColor { traitCollection in
        return traitCollection.userInterfaceStyle == .dark ? .black : .white
    }
}
Run Code Online (Sandbox Code Playgroud)

colors uicolor asset-catalog swiftui

6
推荐指数
3
解决办法
838
查看次数

SwiftUI:自定义模态动画

我使用 SwiftUI 制作了一个自定义模式。它工作正常,但动画不稳定。

在慢动作播放时,您可以看到ModalContent触发ModalOverlay的点击动作后 的背景立即消失。但是,ModalContentText视图始终可见。

谁能告诉我如何防止ModalContent的背景过早消失?

慢动作视频和代码如下:

在此处输入图片说明

import SwiftUI

struct ContentView: View {
    @State private var isShowingModal = false

    var body: some View {
        GeometryReader { geometry in
            ZStack {
                Button(
                    action: { withAnimation { self.isShowingModal = true } },
                    label: { Text("Show Modal") }
                )

                ZStack {
                    if self.isShowingModal {
                        ModalOverlay(tapAction: { withAnimation { self.isShowingModal = false } })
                        ModalContent().transition(.move(edge: .bottom))
                    }
                }.edgesIgnoringSafeArea(.all)
            }
        }
    }
}

struct ModalOverlay: …
Run Code Online (Sandbox Code Playgroud)

animation modal-dialog swiftui

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

使用 AVAudioEngine 将 AVAudioInputNode 连接到 AVAudioUnitEffect

我想AVAudioInputNode使用音频单元效果 ( AVAudioUnitEffect)处理来自设备内置麦克风 ( ) 的音频。对于我的示例,我使用AVAudioUnitReverb. 连接AVAudioUnitReverb导致应用程序崩溃。

import UIKit
import AVFoundation

class ViewController: UIViewController {

    let audioEngine = AVAudioEngine()
    let unitReverb = AVAudioUnitReverb()

    var inputNode: AVAudioInputNode!

    override func viewDidLoad() {
        super.viewDidLoad()

        inputNode = audioEngine.inputNode
        audioEngine.attachNode(unitReverb)

        let inputFormat = inputNode.inputFormatForBus(0)
        audioEngine.connect(inputNode, to: unitReverb, format: inputFormat)

        // This line is crashing the application!
        // With this error "AVAudioNode.mm:521: AUSetFormat: error -10868"
        audioEngine.connect(unitReverb, to: audioEngine.outputNode, format: inputFormat)

        audioEngine.startAndReturnError(nil)
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我绕过混响并inputNode直接连接到audioEngine.outputNode,我没有问题,但是我没有混响:

audioEngine.connect(inputNode, …

ios avaudioengine

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