gpt4 book ai didi

ios - 修剪长度在音频修剪iOS中出现错误

转载 作者:行者123 更新时间:2023-12-03 02:07:56 25 4
gpt4 key购买 nike

因此,我有一个可以放大的波形应用程序。

然后打开修整控件以编辑波形。

当我按下编辑按钮时,修剪控件以一定的长度开始,如下所示:

-(IBAction)edit:(id)sender {

if (player.duration) {

_trimControl = [[RETrimControl alloc] initWithFrame:CGRectMake(0, 0, self.waveform.frame.size.width, self.waveform.frame.size.height/4)];

_trimControl.length = player.duration*((self.waveform.zoomEndSamples-self.waveform.zoomStartSamples)/self.waveform.totalSamples);

_trimControl.delegate = self;
[self.view addSubview:_trimControl];
[_trimControl setCenter:CGPointMake(self.waveform.center.x, self.waveform.center.y)];
}
}

这给了我正确的_trimControl.length。

但是,当我尝试在用户放大波形后重设长度时,对于完全相同的公式,它的值为0。

首先,我将UIPinchGestureRecognizer分配给我的波形 View ,以便在用户捏住波形时,将发生如下操作:
-(void)pinchEnd:(UIPinchGestureRecognizer*) gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateEnded && self.trimControl != nil) {

[self resetTrim];
}
}

而resetTrim方法就是这样
-(void)resetTrim {

_trimControl.length = player.duration*((self.waveform.zoomEndSamples-self.waveform.zoomStartSamples)/self.waveform.totalSamples);


NSLog(@"This is how many zoomEndSamples %lu", self.waveform.zoomEndSamples);
NSLog(@"This is how many zoomStartSamples %lu", self.waveform.zoomStartSamples);
NSLog(@"This is how many zoomTotalSamples %lu", self.waveform.totalSamples);
NSLog(@"This is how many seconds %f", player.duration);
NSLog(@"This is the trimcontrol %ld", (long)self.trimControl.length);
}

这是我得到的NSLog读数:
This is how many zoomEndSamples 2202964
This is how many zoomStartSamples 1046166
This is how many zoomTotalSamples 3249152
This is how many seconds 73.629025
This is the trimcontrol 0

奇怪的是,如果我使用除self.trimControl.length以外的所有值,则计算可以正常进行。绝对不能为0。在上面的IBAction编辑中,它也不为零。

有什么想法我做错了吗?为什么self.trimControl.length的输出方式不同?

更新:

这就是我在ViewController.h文件中声明_trimControl的方式。
@property (strong, nonatomic) IBOutlet RETrimControl *trimControl;

最佳答案

我的猜测是您的实例变量_trimControl为零。起初它持有并反对,但是由于某种原因它被释放了。

尝试在两个地方都记录:

NSLog(@"_trimControl = %@", _trimControl);

如何声明trimControl属性?您在使用ARC还是手动引用计数?如果您使用的是手动引用计数,并且_trimControl创建为自动释放的,则可以在用户与用户界面交互时释放它。

使用有关如何定义trimControl属性以及如何对其进行初始化的更多信息来更新您的问题。

关于ios - 修剪长度在音频修剪iOS中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com