令人惊讶的是,您现在可以通过对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。
配置项目
Cocoa应用程序模板配置了一个故事板实现,您将不需要它。 您可以将其留在那里,但是当应用程序运行时,最终会出现两个窗口。
以下是您需要做的快速列表:
- 添加Xamarin.Forms 2.3.5.233-pre1 预览发布NuGet。
- 在您的macOS项目中,添加对您的Xamarin.Forms项目(共享或PCL)的引用
- 导入任何资源,如图像或字体
- 编辑info.plist并删除源条目(NSMainStoryboardFile)
- 更新Main.cs以初始化AppDelegate
点击(此处)折叠或打开
- static class MainClass
- {
- static void Main(string[] args)
- {
- NSApplication.Init();
- NSApplication.SharedApplication.Delegate = new AppDelegate();
- NSApplication.Main(args);
- }
- }
- static class MainClass
- 更新AppDelegate以初始化Xamarin.Forms,创建一个窗口,并加载Forms App
- 如果您有其他依赖关系需要初始化,请在此处执行。
运行
将macOS项目作为启动,运行它。瞧! 你现在有一个本地macOS应用程序!
下一步是什么?
现在你有一个应用程序,现在是时候放上你的UX Designer帽子,并开始探索你需要在这个新的桌面环境中感受更多的变化。
造型
运行您的XAMarin.Forms UI for MacOS。 手机上使用的相同样式可能看起来不正确。 这很容易更新!
随着近期对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);
已知的问题
这是一个预览,所以你应该期望不是一切都准备好了。 以下是您在项目中添加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