Не удается изменить внешний вид панели навигации в iOS 13 Visual Studio - PullRequest
0 голосов
/ 09 марта 2020

В моем проекте Xamarin.Forms 4.4 я определил глобальные цвета для моей навигационной панели как solid оранжевый с белым текстом, используя следующий код: *

UINavigationBar.Appearance.BackgroundColor = UIColor.Orange;
UINavigationBar.Appearance.BarTintColor = UIColor.Orange;
UINavigationBar.Appearance.TintColor = UIColor.White;
UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes()
{
  ForegroundColor = UIColor.White
};

После обновления моего Xamarin .Forms NuGet с 4.4 до 4.5, любое приложение, которое я запускаю в iOS 13, имеет белую панель навигации solid в режиме Light с белым текстом.

Я знаю, что есть несколько новых классов, которые можно использовать для iOS 13. Но я не понимаю, как использовать их, чтобы получить такой же внешний вид (или просто что-то читаемое) в iOS 13. Вот что я пробовал:


  UINavigationBarApperance nba = new UINavigationBarAppearance();
  nba.ConfigureWithOpaqueBackground();
  nba.BackgroundColor = UIColor.Orange;
  nba.BarTintColor = UIColor.Orange;
  nba.TintColor = UIColor.White;
  UINavigationBar.Appearance.ScrollEdgeAppearance = nab;
  UINavigationBar.Appearance.StandardAppearance = nab;
  UINavigationBar.Appearance.CompactAppearance = nab;

Вот мои результаты:

На самом деле я вижу какое-то цветное кровотечение через то, что выглядит как наложение белого градиента. Я подозреваю, что темно-серый является результатом темного градиента над моим выбранным цветом

enter image description here enter image description here

1 Ответ

1 голос
/ 10 марта 2020

Я пробовал с общим кодом, на моем локальном сайте нет проблем, не имеет значения в Xamarin. iOS или Xamarin.Forms проекта. Действуйте следующим образом:

enter image description here

При использовании общего кода необходимо писать в AppDelegate.cs. Если запись в другом месте, например в Sub-ViewController, не будет работать.

// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
    //
    // This method is invoked when the application has loaded and is ready to run. In this 
    // method you should instantiate the window, load the UI into it and then make the window
    // visible.
    //
    // You have 17 seconds to return from this method, or iOS will terminate your application.
    //
    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init();
        global::Xamarin.Forms.FormsMaterial.Init();

        LoadApplication(new App());

        Console.WriteLine("------13--------");
        UINavigationBar.Appearance.BackgroundColor = UIColor.Orange;
        UINavigationBar.Appearance.BarTintColor = UIColor.Orange;
        UINavigationBar.Appearance.TintColor = UIColor.White;
        UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes()
        {
            ForegroundColor = UIColor.White
        };

        return base.FinishedLaunching(app, options);
    }
}

Кроме того, , из общего снимка экрана, цвет был установлен для NavigationBar. Тем не менее, он был переопределен другим цветом. Я думаю, что где-то написанный код влияет на это.

Кстати, есть способы Xamarin Forms, чтобы установить цвет для панели навигации. Вы также можете использовать это или проверить, уже использовали ли вы его в проекте.

App.xaml.cs :

NavigationPage navigationPage = new NavigationPage(new MainPage());
navigationPage.BarBackgroundColor = Color.White;
navigationPage.BarTextColor = Color.Black;
MainPage = navigationPage;
...