Оболочка Xamarin Forms — расширенное представление iOS под нижней панелью вкладок

#xamarin.forms #xamarin.ios #xamarin-forms-shell

Вопрос:

Я пытаюсь расширить свои страницы из своей оболочки под нижней панелью вкладок в iOS

MyShellRenderer:класс ShellRenderer

 [assembly: ExportRenderer(typeof(AppShell), typeof(MyShellRenderer))]
 namespace your namepace
 {
   class MyShellRenderer:ShellRenderer
   {
      protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
      {
          return new MyShellTabBarAppearanceTrancker();
      }
   }
 }
 

Класс myshelltabbarappearancetrancer:

 class MyShellTabBarAppearanceTrancker : IShellTabBarAppearanceTracker
{
    public void Dispose()
    {

    }

    public void ResetAppearance(UITabBarController controller)
    {
      
    }

    public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
    {
       controller.TabBar.IsTranslucent = true;        
    }

    public void UpdateLayout(UITabBarController controller)
    {
        
    }
}
 

Но это не работает, оболочка сохраняет все страницы над нижней панелью вкладок (как в стеке).

Ответ №1:

Используйте Alpha вместо IsTranslucent .

Значение этого свойства представляет собой число с плавающей запятой в диапазоне от 0,0 до 1,0, где 0,0 означает полную прозрачность, а 1,0 означает полную непрозрачность.

Попробуйте установить его как controller.TabBar.Alpha = 0.5f; .

Тестовый код в xaml

    <Grid>
        <Label Text="111" VerticalOptions="Start"/>
        <Label Text="222" Margin="30,0,0,-50" VerticalOptions="End"/>
    </Grid>
 

введите описание изображения здесь

Комментарии:

1. idk как, но это не работает для меня :/ Возможно ли выполнить это в визуализаторе без необходимости добавлять прозрачность ?

2. без необходимости вводить прозрачность ? Что это значит ?

3. непрозрачная панель (с сплошным цветом), я объясняю, почему я хочу этого добиться : потому что я добавил закругленный угол (верхний левый и верхний правый) на панель вкладок, но вид находится над панелью вкладок, поэтому рендеринг плохой, и решение состоит в том, что вид должен проходить под панелью вкладок