Настройка платформы Mac

Перед началом создайте (или используйте существующий) Xamarin.Forms проект. Приложения Mac можно добавлять только с помощью Visual Studio для Mac.

Добавление проекта macOS в Xamarin.Forms видео

Добавление приложения Mac

Следуйте этим инструкциям, чтобы добавить приложение Mac, которое будет работать в macOS Sierra и macOS El Capitan:

  1. В Visual Studio для Mac щелкните правой кнопкой мыши существующее Xamarin.Forms решение и выберите добавить > новый проект...

  2. В окне "Новый проект" выберите >приложение Mac App > Cocoa и нажмите кнопку "Далее".

  3. Введите имя приложения (и при необходимости выберите другое имя для элемента док-станции), а затем нажмите кнопку "Далее".

  4. Просмотрите конфигурацию и нажмите клавишу CREATE. Ниже приведены следующие действия.

    Animated instructions showing how to add a Cocoa app

  5. В проекте Mac щелкните правой кнопкой мыши пакеты "Добавить пакеты > ", чтобы добавить Xamarin.Forms NuGet. Кроме того, следует обновить другие проекты, чтобы использовать ту же версию Xamarin.Forms пакета NuGet.

  6. В проекте Mac щелкните правой кнопкой мыши ссылки и добавьте ссылку на Xamarin.Forms проект (общий проект или проект библиотеки .NET Standard).

    Add a reference to the Xamarin.Forms shared code project

  7. Обновление Main.cs для инициализации AppDelegate:

    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            NSApplication.SharedApplication.Delegate = new AppDelegate(); // add this line
            NSApplication.Main(args);
        }
    }
    
  8. Обновите AppDelegate для инициализации Xamarin.Forms, создайте окно и загрузите Xamarin.Forms приложение (не забудьте задать соответствующий Titleпараметр). Если у вас есть другие зависимости, которые необходимо инициализировать, сделайте это здесь также.

    using Xamarin.Forms;
    using Xamarin.Forms.Platform.MacOS;
    // also add a using for the Xamarin.Forms project, if the namespace is different to this file
    ...
    [Register("AppDelegate")]
    public class AppDelegate : FormsApplicationDelegate
    {
        NSWindow window;
        public AppDelegate()
        {
            var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
    
            var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
            window = new NSWindow(rect, style, NSBackingStore.Buffered, false);
            window.Title = "Xamarin.Forms on Mac!"; // choose your own Title here
            window.TitleVisibility = NSWindowTitleVisibility.Hidden;
        }
    
        public override NSWindow MainWindow
        {
            get { return window; }
        }
    
        public override void DidFinishLaunching(NSNotification notification)
        {
            Forms.Init();
            LoadApplication(new App());
            base.DidFinishLaunching(notification);
        }
    }
    
  9. Дважды щелкните Main.storyboard для редактирования в Xcode. Выберите окно и un проверкаполе "Начальный контроллер" проверка (это связано с тем, что приведенный выше код создает окно):

    Uncheck the Is Initial Controller checkbox in Xcode

    Вы можете изменить систему меню в раскадровке, чтобы удалить нежелательные элементы.

  10. Наконец, добавьте все локальные ресурсы (например, файлы изображений) из существующих проектов платформы, необходимых.

  11. Теперь проект Mac должен запустить Xamarin.Forms код в macOS!

Next Steps

Стили

С помощью последних изменений, внесенных в эту версию OnPlatform , теперь можно нацелиться на любое количество платформ. Это включает macOS.

<Button.TextColor>
    <OnPlatform x:TypeArguments="Color">
        <On Platform="iOS" Value="White"/>
        <On Platform="macOS" Value="White"/>
        <On Platform="Android" Value="Black"/>
    </OnPlatform>
</Button.TextColor>

Обратите внимание, что вы также можете удвоиться на платформах, как показано ниже <On Platform="iOS, macOS" ...>.

Размер окна и положение

Вы можете настроить начальный размер и расположение окна в следующих AppDelegateэлементах:

var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);  // x, y, width, height

Известные проблемы

Это предварительная версия, поэтому следует ожидать, что не все готово к работе. Ниже приведены некоторые моменты, которые могут возникнуть при добавлении macOS в проекты:

Не все NuGet готовы к работе с macOS

Возможно, некоторые из используемых библиотек еще не поддерживают macOS. В этом случае необходимо отправить запрос в поддержку проекта, чтобы добавить его. До тех пор, пока у них не будет поддержки, вам может потребоваться найти альтернативные варианты.

Отсутствующие Xamarin.Forms функции

В этой предварительной версии не все Xamarin.Forms функции завершены. Дополнительные сведения см. в разделе "Состояние macOS для поддержки платформы" в репозитории Xamarin.Forms GitHub.