【问题标题】:MPVolumeView slider disappears when audio session changes音频会话更改时 MPVolumeView 滑块消失
【发布时间】:2012-11-14 16:52:01
【问题描述】:

这是我在这里的第一个问题,所以如果我在问题的格式上犯了任何错误,我提前道歉。

我的应用中有一个设置屏幕,我在其中放置了一个 UISlider 来控制音量,我从 MPVolumeView 获得了这个滑块,如下所示:

- (UISlider *)getSystemVolumeSlider {
    UISlider *volumeSlider;
    UISlider *designTemplateSlider = [[UISlider alloc] init];
    ///////volume slider////////////////////////////////

    MPVolumeView *volumeView = [[MPVolumeView alloc] init];

    //get only the slider
    for (id current in volumeView.subviews){
        if ([current isKindOfClass:[UISlider class]]) {
            volumeSlider = (UISlider *)current;

            UIImage *minimumTrackImage = [[designTemplateSlider minimumTrackImageForState:UIControlStateNormal] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
            [volumeSlider setMinimumTrackImage:minimumTrackImage forState:UIControlStateNormal];
            UIImage *maximumTrackImage = [[designTemplateSlider maximumTrackImageForState:UIControlStateNormal] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
            [volumeSlider setMaximumTrackImage:maximumTrackImage forState:UIControlStateNormal];
            [volumeSlider setThumbImage:[designTemplateSlider thumbImageForState:UIControlStateNormal] forState:UIControlStateNormal];

            Method originalThumbRect = class_getInstanceMethod(NSClassFromString(@"MPVolumeSlider"),
                                                               @selector(thumbRectForBounds:trackRect:value:));
            Method newThumbRect = class_getInstanceMethod([CustomUISlider class],
                                                          @selector(thumbRectForBounds:trackRect:value:));
            method_exchangeImplementations(originalThumbRect, newThumbRect);
            [volumeSlider setFrame:CGRectMake(0, 0, 120, 27)];

        }
    }
    return volumeSlider;
}

问题是,当我更改音频会话(插件耳机或以编程方式)时,滑块会从屏幕上消失。 此滑块位于表格视图内,因此如果我再次向下和向上滚动,滑块将再次显示。 任何人都知道如何将其保留在屏幕上或为什么会消失? 顺便说一句,我使用 AVAudioPlayer 播放声音。 提前谢谢。

【问题讨论】:

    标签: objective-c ios avaudioplayer ipod mpvolumeview


    【解决方案1】:

    看起来您正在使用 ARC,并且您的实例可能已被释放,并且系统将其从其超级视图中删除......只是一个快速的想法。

    我没有检查这个,但我会尝试将你的滑块移动到你班级的一个属性上,然后分配它并再次测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      相关资源
      最近更新 更多