常州微信网站建设平台,百度建立网站需要花多少钱,哪个网站做动图,广东深圳最新消息今天Maui的学习之路今天是我开启Maui学习之路的第二天#xff0c;我不是很高兴又能水一篇文章#xff0c;我只能说这文章真好水。话不多说#xff0c;我们进入正题#xff0c;昨天解决了Windows下TitleBar以及窗体大小的问题#xff0c;今天同样的问题#xff0c;在Mac上又要… Maui的学习之路今天是我开启Maui学习之路的第二天我不是很高兴又能水一篇文章我只能说这文章真好水。话不多说我们进入正题昨天解决了Windows下TitleBar以及窗体大小的问题今天同样的问题在Mac上又要解决一遍这真的是让我又气又恨。有了昨天的经验今天做Mac的开发就明智了很多因为我知道微软肯定不会让我好过于是我直接打开Apple官网翻到Xcode开发指南做好准备。同样在做有关窗体的改动之前你需要先注册Mac上程序的生命周期函数找了一圈并没有AddMac这个扩展方法于是我直接使用AddiOS这个扩展方法我就是这么优秀直接就能定位到关键在OnActive回调中进行我需要的操作操作如下注册生命周期函数你也可以在重写窗口的OnCreate函数第一步需要解决Mac上TitleBar隐藏的问题在Mac系统上微软选择了UIKit框架进行实现这不同于Windows所以我熟练的打开Apple官方文档在Apple开发者指南首页立马就能定位到目标对象真的是超级简单参考文档从用 Mac Catalyst 构建的 Mac App 中移除标题栏 - 简体中文文档 - Apple Developer[1]实现步骤获取UIApplication下的主窗体隐藏TitleBar代码实现builder.AddiOS(app {app.OnActivated(e {//var vKeyWindow e.KeyWindow;var vKeyWindow e.Windows.FirstOrDefault();if (vKeyWindow is null)return;var vTitleBar vKeyWindow.WindowScene?.Titlebar;if (vTitleBar is null)return;vTitleBar.TitleVisibility UITitlebarTitleVisibility.Hidden;vTitleBar.Toolbar null;})});效果如下第二步需要修改Mac应用窗体的默认大小这真是个老大难问题我翻遍了UIKit相关的所有资料也许没翻全都没看到但凡一点有关窗体大小的介绍唯一的介绍是跟View相关修改Frame这对我没有鸟用(这是AppKit框架下的实现)还好我的优点就是眼睛比较好在文档中看到了这样的信息参考资料UISceneSizeRestrictions | Apple Developer Documentation[2]或许修改MinimumSize和MaximumSize可以变相实现窗口尺寸变化于是我尝试着修改了一下发现当我修改MinimumSize时窗体确实发生了变化不过这里发生一个很诡异的事情窗体的长宽并不符合我设置的值发现这个问题是因为我获取到屏幕的size后直接设置进去窗体并未最大化显示于是我查了一些资料发现好像这里要乘以1.3才是实际值为什么是1.3我不太清楚有知道的小伙伴可以滴滴因为他也不是dpi的值总之经过这一番折腾是能解决问题了最大化窗口就是将屏幕尺寸直接给进去即可。代码如下builder.AddiOS(app
{app.OnActivated(e {//var vKeyWindow e.KeyWindow;var vKeyWindow e.Windows.FirstOrDefault();if (vKeyWindow is null)return;var vTitleBar vKeyWindow.WindowScene?.Titlebar;if (vTitleBar is null)return;vTitleBar.TitleVisibility UITitlebarTitleVisibility.Hidden;vTitleBar.Toolbar null;double nWidth 1000;double nHeight 500;var vScreen vKeyWindow.Screen;var vCGRect vScreen.Bounds;if (nWidth vCGRect.Width)nWidth vCGRect.Width.Value;if (nHeight vCGRect.Height)nHeight vCGRect.Height.Value;vKeyWindow.WindowScene.SizeRestrictions.MinimumSize new CGSize(nWidth * 1.3, nHeight);vKeyWindow.WindowScene.SizeRestrictions.MaximumSize new CGSize(vCGRect.Width * 1.3, vCGRect.Height * 1.3);});
});效果如下窗口最大化的演示注意Apple的程序每次运行后会记住上一次启动窗口的大小所以 当你首次将界面改大后使用上述的方式并不能将他改小此时你需要将MaximumSize改小才能让窗口变小。最终我并未找到怎么开启Mac程序的全屏方案很抱歉如果有知道UIKit怎么全屏的朋友欢迎滴滴。另外不得不吐槽一点Apple官方文档太能藏了微软的开发文档如果是第二那么没人敢说第一如果我要找Windows API 我只需要进到MSDN一搜一大把但是说真的我都不知道怎么在苹果官方搜MacOS API。我翻了一下Xamarin.Mac官方文档当初Xamarin.Mac使用的是Appkit的那套方案实现的所以好像参考性不是特别大。不过新奇的我居然发现微软官网的UIKit官方文档居然比Apple提供的还要全面真是让人欣喜若狂参考资料UIKit Namespace | Microsoft Docs[3]最后还得是我软巨硬真牛。参考资料[1]参考文档从用 Mac Catalyst 构建的 Mac App 中移除标题栏 - 简体中文文档 - Apple Developer: 链接https://developer.apple.com/cn/documentation/uikit/mac_catalyst/removing_the_title_bar_in_your_mac_app_built_with_mac_catalyst/[2]参考资料UISceneSizeRestrictions | Apple Developer Documentation: https://developer.apple.com/documentation/uikit/uiscenesizerestrictions[3]参考资料UIKit Namespace | Microsoft Docs: https://docs.microsoft.com/zh-cn/dotnet/api/uikit?viewxamarin-ios-sdk-12