小编Won*_*ray的帖子

运行单元测试时删除 UserDefaults 生成的 plist 文件

我正在测试一个依赖于 UserDefaults 实例的类。按照此处找到的示例代码,我创建并设置实例,如下所示:

override func setUp() {
    super.setUp()
    defaults = UserDefaults(suiteName: #file)
    defaults.removePersistentDomain(forName: #file)
}
Run Code Online (Sandbox Code Playgroud)

运行测试后,将在与此测试类相同的目录中创建一个 plist 文件。如果我的测试文件被命名,TestFile.swift则 plist 的名称为TestFile.swift.plist. 我很确定这是在调用suiteName:上面的初始化程序时生成的。我的问题是:测试完成后如何删除该文件?我尝试在测试方法中调用removeSuite(named: #file)removeVolatileDomain(forName: #file)和 ,但没有成功。打电话似乎也没有帮助。removePersistentDomain(forName: #file)tearDownsynchronize()

nsuserdefaults ios xctest swift userdefaults

8
推荐指数
1
解决办法
1123
查看次数

从某个时间开始将 AVAudioFile 读入缓冲区

假设我有一个持续时间为 10 秒的 AVAudioFile。我想将该文件加载到 AVAudioPCMBuffer 中,但我只想加载特定秒数/毫秒后或特定 AVAudioFramePosition 之后出现的音频帧。

它看起来不像 AVAudioFile 的readIntoBuffer方法给我那种精度,所以我假设我必须在 AVAudioBuffer 级别或更低级别工作?

objective-c ios avaudioengine avaudiofile avaudioplayernode

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

播放AVAudioPlayerNode时,AVAudioEngine inputNode的格式发生更改

我将从我制作的一个简单的“操场”视图控制器类开始,该类演示了我的问题:

class AudioEnginePlaygroundViewController: UIViewController {
    private var audioEngine: AVAudioEngine!
    private var micTapped = false
    override func viewDidLoad() {
        super.viewDidLoad()
        configureAudioSession()
        audioEngine = AVAudioEngine()
    }

    @IBAction func toggleMicTap(_ sender: Any) {
        guard let mic = audioEngine.inputNode else {
            return
        }
        if micTapped {
            mic.removeTap(onBus: 0)
            micTapped = false
            return
        }
        stopAudioPlayback()

        let micFormat = mic.inputFormat(forBus: 0)
        print("installing tap: \(micFormat.sampleRate) -- \(micFormat.channelCount)")
        mic.installTap(onBus: 0, bufferSize: 2048, format: micFormat) { (buffer, when) in
            print("in tap completion")
            let sampleData = UnsafeBufferPointer(start: buffer.floatChannelData![0], count: Int(buffer.frameLength)) …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios swift avaudioengine avaudioplayernode

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

如何为 UIFontMetrics 指定最小 UIContentSizeCategory?

我有一种基于动态类型创建自动缩放字体的方法,如下所示:

extension UIFont {
    public static func getAutoScalingFont(_ fontName: String, _ textStyle: UIFont.TextStyle) -> UIFont {
        // getFontSize pulls from a map of UIFont.TextStyle and UIFont.Weight to determine the appropriate point size
        let size = getFontSize(forTextStyle: textStyle)
        guard let font = UIFont(name: fontName.rawValue, size: size) else { 
            return UIFont.systemFont(ofSize: size)
        }
        let fontMetrics = UIFontMetrics(forTextStyle: textStyle)
        let traitCollection = UITraitCollection(preferredContentSizeCategory: UIApplication.shared.preferredContentSizeCategory)
        let fontDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: textStyle, compatibleWith: traitCollection)
        return fontMetrics.scaledFont(for: font, maximumPointSize: fontDescriptor.pointSize)
    }
}
Run Code Online (Sandbox Code Playgroud)

这看起来效果很好;当我更改手机设置中的文本大小滑块值时,字体会根据需要进行缩放。

我现在尝试添加最小UIContentSizeCategory 的逻辑。也就是说,如果用户将其文本大小值设置为小于我指定的最小大小类别,则字体应按比例缩放,就像他们选择了最小值一样。 …

uifont ios swift uifontdescriptor uitraitcollection

2
推荐指数
1
解决办法
1598
查看次数