Как удалить громкость HUD в Xamarin Forms?

Я сделал customrenderer для рендеринга MPVolumeView внутри приложения xamarin.forms. Всякий раз, когда я регулирую громкость, я получаю этот большой системный HUD на экране, который блокирует контент на экране. Выглядит примерно так: введите здесь описание изображения

Как это удалить? Это мой пользовательский рендерер:

public class AudioOutputViewRenderer : ViewRenderer<AudioOutputView, UIView>
{
    MPVolumeView view;

    protected override void OnElementChanged(ElementChangedEventArgs<AudioOutputView> e)
    {
        base.OnElementChanged(e);

        TintColor = UIColor.FromRGB(54, 66, 94);

        if (Control == null)
        {
            view = new MPVolumeView()
            {
                ShowsRouteButton = false,
                ShowsVolumeSlider = true

            };

            SetNativeControl(view);
        }
    }
}

person Luca Panjer    schedule 06.03.2018    source источник
comment
Измените true на false : ShowsVolumeSlider = true   -  person jdweng    schedule 06.03.2018
comment
Скройте MPVolumeView в своем представлении (оно должно присутствовать в иерархии представлений) и программно установите для него свойство Value на основе другого ползунка.   -  person SushiHangover    schedule 06.03.2018
comment
@jdweng Это полностью скрывает ползунок.   -  person Luca Panjer    schedule 06.03.2018
comment
@SushiHangover Нет свойства с именем value. Я тоже не могу найти ничего похожего.   -  person Luca Panjer    schedule 06.03.2018
comment
@LucaPanjer MPVolumeView - это составное представление, значение находится в UISlider в подпредставлении, ищите SO, как программно без отображения системной звуковой панели (или что-то в этом роде) под тегом iOS (у меня нет кода C # передо мной так как я сейчас на мобильном)   -  person SushiHangover    schedule 06.03.2018
comment
Вы просите удалить его, и установка значения false делает именно это. Вы можете переместить положение элемента управления, если хотите, чтобы оно было перемещено.   -  person jdweng    schedule 06.03.2018
comment
@jdweng Я имею в виду большую серую область HUD с громкостью, которая появляется. Когда я устанавливаю для свойства значение false, все, что удаляется, — это сам ползунок, после чего вы больше не можете контролировать громкость.   -  person Luca Panjer    schedule 06.03.2018
comment
@SushiHangover Мне удалось это сделать, но этот большой серый блок в системе все еще появляется всякий раз, когда я меняю громкость.   -  person Luca Panjer    schedule 06.03.2018


Ответы (1)


Я не понял смысла AudioOutputViewRenderer

Но чтобы скрыть MPVolumeView вам нужно следующее:

в вашем IosProject -> AppDelegate -> метод FinishedLaunching добавьте следующий код

        var volumeView = new MPVolumeView(new CGRect(-1000,0,0,0));// -1000 will hide your view  from user 
        volumeView.ClipsToBounds = true;
        var slider = volumeView.Subviews.First(x => x is UISlider) as UISlider;
        UIApplication.SharedApplication.KeyWindow.RootViewController.View.AddSubview(volumeView);

После того, как вы можете использовать var slider для изменения громкости следующим образом

        slider.Value = [your vlm]; 
person Dmitry Zinoviev    schedule 07.03.2019