xamarin - 使用平台特定选项配置平台页面
问题描述
我们已经开始为一个涉及 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.EdgesForExtendedLayout
Property,我面临的直接问题是,我能找到的唯一“代码片段”来自View 显示在状态栏下在 iOS 7 中,EdgesForExtendedLayout 对论坛帖子没有帮助。
手头的问题...
发布的示例解决方案片段似乎正在使用特定于平台 (iOS) 的解决方案。问题是,我想继续在“平台”项目中使用“跨平台”代码,并简单地为 iOS 平台提供一些可以应用这些状态的自定义配置。
我知道可以使用渲染器,但这似乎是反交互的,因为我需要一个用于 iOS 和 Android 的渲染器,其中平台页面做得很好。
我知道我可以设置一个 DependencyService,但是为了解决 iOS 的这个问题而必须包含一个特定的“配置”服务似乎很烦人
我希望有可能设置一个 iOS 页面,它可以“覆盖”平台页面的某些功能,并允许我使用类似的东西,viewDidLoad
这样我就可以逐页在页面上应用 iOS 特定配置,所以我们可以保持平台页面不变,但是在 iOS 下运行时,它可以让我访问实际视图的 iOS 生命周期......
我一直在尝试搜索文档和教程,但还没有遇到任何似乎可以做到这一点或类似的东西(并不是说没有,但我只是没有找到它)。
解决方案
推荐阅读
- excel - 如何搜索包含特定日期的单元格?
- cloud - 有没有办法通过单个 Compute Engine 的 VM 实例连接多个 Cloud memorystore 实例
- java - Java链表递归方法
- c# - 在 Stringbuilder 中附加密钥对。AddIfNotNull 方法
- django - 我使用了 Material Forms 模块,昨天在尝试启动项目后,我收到 ImportError 错误:“No module named material”
- typescript - 如何定义将类型作为强类型参数的 Typescript 函数
- reactjs - 渲染前等待多个组件的异步调用
- ios - 如何获取在 UIImageView 上点击的点的坐标,以便它们在所有设备(不同大小/分辨率)上处于相同位置?
- node.js - 使用 fluentd 更新 mongo 记录
- java - 从命令行注入地图