Xamarin.Forms.Platform.MacOS 시작하기

9819 단어 MacOSXXamarinC#

Problem



Xamarin.Forms.Platform.MacOS가 2.4.0 릴리스에서 Stable이 된 것 같습니다.
htps : //에서 ゔぇぺぺr. 마린. 코 m/레아세 s/아마린-후 rms/아 마린-후 rms-2.4/2.4.0-s타 b/

당연히 IDE 지원은 아직이므로 Cocoa App 프로젝트를 만든 적이없는 분들도 알 수 있도록 만드는 방법을 정리해 둡니다. 그렇다고해도 Xamarin.Forms 프로젝트를 공백에서 만드는 방법과 같습니다.

Solution



프로젝트 만들기



공백 프로젝트를 적당히 만드십시오. 공유하거나 PCL을 사용할 수 있습니다.


곧 코코아 앱 프로젝트를 추가합니다. 프로젝트 이름을 정렬 xxx.Mac입니다.


Xamarin.Forms 설치



어쨌든 NuGet에서 Xamarin.Forms를 설치합니다.




사용자 인터페이스를 포함하는 공유 PCL 프로젝트를 참조하십시오.


부팅 순서 변경



그대로 실행하면 Main.storyboard가 읽혀 윈도우가 구축되므로 이것을 억제합니다. 먼저 Main.storyboard를 완전히 제거합니다. ViewController.cs 필요하지 않습니다.

Info.plist를 열고 Main Interface를 공백으로 만듭니다.

AppDelegate.cs를 열고 using Xamarin.Forms, using Xamarin.Forms.Platform.MacOS를 추가하고 NSApplicationDelegate 대신 FormsApplicationDelegate를 상속합니다.

AppDelegate.cs
using AppKit;
using Foundation;
using Xamarin.Forms;
using Xamarin.Forms.Platform.MacOS;

namespace HelloForms.Mac
{
    [Register("AppDelegate")]
    public class AppDelegate : FormsApplicationDelegate
    {
        public AppDelegate()
        {
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            // Insert code here to initialize your application
        }

        public override void WillTerminate(NSNotification notification)
        {
            // Insert code here to tear down your application
        }
    }
}
FormsApplicationDelegate는 추상 클래스이므로 요청하는 구현을 추가합니다. NSWindow 형식의 MainWindow 속성을 구현합시다. 또한 AppDelegate 생성자에서 초기화합니다.

AppDelegate.cs
public AppDelegate()
{
    var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;

    var rect = new CoreGraphics.CGRect(200, 200, 800, 600);
    this._window = new NSWindow(rect, style, NSBackingStore.Buffered, false)
    {
        Title = "Hello, Xamarin Forms!"
    };
}

private NSWindow _window;

public override NSWindow MainWindow => this._window;
DidFinishLaunching 메서드로 만든 창이 표시되도록 합니다.

AppDelegate.cs
public override void DidFinishLaunching(NSNotification notification)
{
    Forms.Init();
    LoadApplication(new App());
    base.DidFinishLaunching(notification);
}

마지막으로 Main.cs를 열고 만든 FormsApplicationDelegate를 응용 프로그램에 등록합니다.

Main.cs
using AppKit;

namespace HelloForms.Mac
{
    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            // SharedApplication に触れるのは Init の後
            NSApplication.SharedApplication.Delegate = new AppDelegate();
            NSApplication.Main(args);
        }
    }
}

실행해보기





작동하지 않을 때


  • Main.cs 에 등록을 잊어버려
  • AppDelegate.cs에서 base.DidFinishLaunching(notification);를 쓰는 것을 잊어 버렸습니다

  • 의 실행시에 일어나기 쉬운 2점 이외는 단순히 컴파일 에러가 된다고 생각하므로 적절히 대처입니다.

    Conclusion



    이대로는 메인 메뉴가 거의 기능을 가지지 않는 채이므로, 프로그램에서 만들게 되고 MainMenu.xib 를 만들어 추가한다(see also : 나왔을 때 기사 ) 하는 것이 좋을 것입니다.Cocoa App 이제 프로젝트를 추가하고 Xamarin.Forms의 시작 순서에 올라갈 수 있습니다. .NET Standard화해 보거나 커스텀 렌더러로 macOS의 다채로운 UI 부품을 사용해 보거나 이것을 발판으로 시도해 보세요.

    좋은 웹페이지 즐겨찾기