预览:将macOS引入Xamarin.Forms

简介: 令人惊讶的是,您现在可以通过对Xamarin.Forms解决方案进行一些调整来运行本机macOS应用程序。 而我必须说“应用程序”,因为那是桌面,对吧? 正如我在上周的Xamarin.Forms 2.3.5预发布公告中所说的,XAMarin.Forms中的macOS支持现在已经在Preview中了。

令人惊讶的是,您现在可以通过对Xamarin.Forms解决方案进行一些调整来运行本机macOS应用程序。 而我必须说“应用程序”,因为那是桌面,对吧?

正如我在上周的Xamarin.Forms 2.3.5预发布公告中所说的,XAMarin.Forms中的macOS支持现在已经在Preview中了。 我们来试试将这个新项目添加到现有的Xamarin.Forms解决方案中,您可能面临的障碍以及当前和将来的平台功能状态。

配置一个macOS项目

D开发macOS是一个Mac的功能,所以同样的规则适用于当你在做一个Xamarin.Mac应用程序。 这里有一个很好的Xamarin.Mac指南,涵盖了先决条件。

当您将XAMarin.Forms macOS项目集成到一个持续的集成系统中,您可以轻松地在Windows上为MacOS构建,就像您现在可以使用iOS一样。

添加可可应用程序项目

直到Xamarin.Forms模板添加一个Cocoa应用程序,我们可以很容易地添加它自己。 要在Xamarin.Studio或Visual Studio for Mac中执行此操作,请在解决方案中添加一个新项目,然后选择Mac> App> Cocoa App。

Adding macOS Project

配置项目

Cocoa应用程序模板配置了一个故事板实现,您将不需要它。 您可以将其留在那里,但是当应用程序运行时,最终会出现两个窗口。

以下是您需要做的快速列表:

  • 添加Xamarin.Forms 2.3.5.233-pre1 预览发布NuGet。
  • 在您的macOS项目中,添加对您的Xamarin.Forms项目(共享或PCL)的引用
  • 导入任何资源,如图像或字体
  • 编辑info.plist并删除源条目(NSMainStoryboardFile)
    info.plist
  • 更新Main.cs以初始化AppDelegate

    点击(此处)折叠或打开

    1. static class MainClass
    2. {
    3.     static void Main(string[] args)
    4.     {
    5.         NSApplication.Init();
    6.         NSApplication.SharedApplication.Delegate = new AppDelegate();
    7.         NSApplication.Main(args);
    8.     }
    9. }


  • 更新AppDelegate以初始化Xamarin.Forms,创建一个窗口,并加载Forms App
    • 如果您有其他依赖关系需要初始化,请在此处执行。

运行

将macOS项目作为启动,运行它。瞧! 你现在有一个本地macOS应用程序!

Example of Sample Weather App

下一步是什么?

现在你有一个应用程序,现在是时候放上你的UX Designer帽子,并开始探索你需要在这个新的桌面环境中感受更多的变化。

造型

运行您的XAMarin.Forms UI for MacOS。 手机上使用的相同样式可能看起来不正确。 这很容易更新!

随着近期对OnPlatform的更改,您现在可以定位任意数量的平台。 那包括macOS。

点击(此处)折叠或打开

  1. Button.TextColor>
  2.     OnPlatform x:TypeArguments="Color">
  3.         On Platform="iOS" Value="White"/>
  4.         On Platform="macOS" Value="White"/>
  5.         On Platform="Android" Value="Black"/>
  6.     /OnPlatform>
  7. /Button.TextColor>


请注意,您还可以在“On Platform =”iOS,macOS“...>等平台上加倍。

窗口大小和位置

引导窗口是否太大? 太小? 在屏幕上发出奇怪的位置? 您可以在AppDelegate上调整所有这一行:

var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);

已知的问题

这是一个预览,所以你应该期望不是一切都准备好了。 以下是您在项目中添加macOS时可能遇到的几件事情。

macOS上不是所有的NuGets都准备好了

为了在macOS项目中工作,软件包必须定位到xamarinmac20。 您可能会发现一些您心爱的图书馆还不支持macOS。 你能做什么? 请发送请求给项目的维护者添加。 在获得支持之前,您可能需要寻找替代品。

Xamarin.Forms功能

这个预览有惊人的Xamarin.Forms UI和功能的覆盖,但有一些已知的差距要注意。

尚未实现 :

  • OpenGlRenderer
  • ListView – ScrollTo, UnevenRows support, refreshing, SeparatorColor, SeparatorVisibility, Footer
  • ViewCell – IsEnabled, ForceUpdateSize
  • Image – Aspect
  • Picker – Bindable / Observable implementation
  • MasterDetailPage – BackgroundColor
  • TabbedPage – BarBackgroundColor, BarTextColor
  • TableView – UnevenRows
  • WebView – Most WebNavigationEvents
  • Navigation – InsertPageBefore

发送您的反馈!

将MacOS项目和Xamarin.Forms 2.3.5.233-pre1预发行版添加到您的解决方案中,让我们知道您的想法。 你觉得缺少什么? 遇到什么问题?

为了快速开始,您可以抓住我在GitHub上更新的WeatherApp:https://github.com/xamarin/xamarin-forms-samples/tree/forms-macos-preview/Weather

目录
相关文章
|
API Windows 开发工具
使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题
原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越实在太久远,兼容性依然是避不开的问题。
1860 0
|
Web App开发 Android开发 Windows
用Xamarin.Forms创建移动应用程序
——针对iOS,Android和Windows的跨平台C#编程慢慢的准备翻译这本书。官方发布的第一版。一边翻译一边学习。 第一章:第一部分,http://blog.chinaunix.
792 0