我正在测试一个依赖于 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()
假设我有一个持续时间为 10 秒的 AVAudioFile。我想将该文件加载到 AVAudioPCMBuffer 中,但我只想加载特定秒数/毫秒后或特定 AVAudioFramePosition 之后出现的音频帧。
它看起来不像 AVAudioFile 的readIntoBuffer方法给我那种精度,所以我假设我必须在 AVAudioBuffer 级别或更低级别工作?
我将从我制作的一个简单的“操场”视图控制器类开始,该类演示了我的问题:
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) 我有一种基于动态类型创建自动缩放字体的方法,如下所示:
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 的逻辑。也就是说,如果用户将其文本大小值设置为小于我指定的最小大小类别,则字体应按比例缩放,就像他们选择了最小值一样。 …
ios ×4
swift ×3
avaudiofile ×1
avfoundation ×1
objective-c ×1
uifont ×1
userdefaults ×1
xctest ×1