Ios 计算当UISlider值更改时更新的辅助功能标签的时间的正确方法?

Ios 计算当UISlider值更改时更新的辅助功能标签的时间的正确方法?,ios,uilabel,nstimeinterval,uiaccessibility,Ios,Uilabel,Nstimeinterval,Uiaccessibility,所以我使用UISlider作为音频播放器的洗涤器。我试图做的是在UISlider的值发生更改时更新标签,以便它能够正确地显示当前音频经过的时间(以分钟和秒为单位)。这是我目前的代码: - (IBAction)valueChanged:(id)sender { if (!self.scrubbing) { [[CRAudioUtility sharedUtility]seekToTime:self.progressSlider.value]; NSInteg

所以我使用UISlider作为音频播放器的洗涤器。我试图做的是在UISlider的值发生更改时更新标签,以便它能够正确地显示当前音频经过的时间(以分钟和秒为单位)。这是我目前的代码:

- (IBAction)valueChanged:(id)sender {
    if (!self.scrubbing) {
        [[CRAudioUtility sharedUtility]seekToTime:self.progressSlider.value];
        NSInteger value    = [CRAudioUtility sharedManager].currentPlaybackTime;
        NSInteger minutes    = value / 60;
        NSInteger seconds = value % 60;

        NSString *time_stamp = [NSString stringWithFormat:@"%d hours:%d minutes",minutes,seconds];
        [self.progressSlider setAccessibilityValue:time_stamp];
        self.progressSliderLabel.text = [NSString stringWithFormat:@"%d:%d minutes",minutes,seconds;

    }
}
音频项目可能超过一小时,也可能不超过一小时,长度可能超过一小时

由于accessibilityLabel已经发布,我需要确保单词“hour”以单数或复数形式正确发布。我可以采取什么样的解决方案来处理这个案件

我可以采取什么样的解决方案来处理这个案件

似乎你想单独考虑各种可能性:

if (minutes > 120) {
    time_stamp = [NSString stringWithFormat:@"%d hours:%d minutes", minutes / 60, minutes % 60];
}
else if (minutes > 60) {
    time_stamp = [NSString stringWithFormat:@"1 hour:%d minutes", minutes % 60];
}
else {
    time_stamp = [NSString stringWithFormat:@"%d:%d minutes", minutes, seconds];
}

我不会投反对票,但这不是正确的方式,也不适用于X语言/地区设置(!)和X组合(例如,增加秒数,并考虑单数和复数的分钟和秒:)我不知道更好的选择:D我将以这样的方式结束…:PIf使用Swift,您可以使用带有where子句的switch语句来检查每个条件,这可能看起来更整洁,但逻辑仍然相似。