首页 > 解决方案 > 使用平台特定选项配置平台页面

问题描述

我们已经开始为一个涉及 iOS 和 Android 的新兴项目评估 Xamarin,其首要目的是生成单个 UI 层(显然还有一些共享代码)(我也是 C# 新手)

TL;博士

我已经开始在 iOS 上探索 Xamarin。我从Phoneword示例开始,它运行良好。

我发现的第一个问题是在 iPhone X 上运行代码,我可以通过MainPage.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUseSafeArea(true);在平台App类中使用来解决

在测试这个时,我注意到了一些ListView不能正确滚动的问题(核心问题实际上是平台填充)。

然后我曾经(MainPage as Xamarin.Forms.NavigationPage).On<iOS>().EnableTranslucentNavigationBar();启用半透明导航栏(因为我们的目标是 iOS 11+),现在所有内容都显示在导航栏下。

这很容易在 xCode 中修复,经过一些研究,我发现我需要使用UIKit.UIViewController.EdgesForExtendedLayoutProperty,我面临的直接问题是,我能找到的唯一“代码片段”来自View 显示在状态栏下在 iOS 7 中,EdgesForExtendedLayout 对论坛帖子没有帮助。

手头的问题...

发布的示例解决方案片段似乎正在使用特定于平台 (iOS) 的解决方案。问题是,我想继续在“平台”项目中使用“跨平台”代码,并简单地为 iOS 平台提供一些可以应用这些状态的自定义配置。

我知道可以使用渲染器,但这似乎是反交互的,因为我需要一个用于 iOS 和 Android 的渲染器,其中平台页面做得很好。

我知道我可以设置一个 DependencyService,但是为了解决 iOS 的这个问题而必须包含一个特定的“配置”服务似乎很烦人

我希望有可能设置一个 iOS 页面,它可以“覆盖”平台页面的某些功能,并允许我使用类似的东西,viewDidLoad这样我就可以逐页在页面上应用 iOS 特定配置,所以我们可以保持平台页面不变,但是在 iOS 下运行时,它可以让我访问实际视图的 iOS 生命周期......

我一直在尝试搜索文档和教程,但还没有遇到任何似乎可以做到这一点或类似的东西(并不是说没有,但我只是没有找到它)。

标签: xamarinxamarin.formsxamarin.ios

解决方案


推荐阅读