Xcode13编译iOS15.1时导航栏消失及UserDialogs滚轮日期选择器异常问题
问题1:Xcode 13编译iOS 15.1后导航栏消失
原因
iOS 15对导航栏默认外观规则做了调整,UINavigationBar新增的scrollEdgeAppearance属性默认采用透明背景配置,未显式设置的场景下,页面滚动到顶部时导航栏会呈现“消失”的效果。
解决方法
在iOS项目的AppDelegate的FinishedLaunching生命周期方法中,全局配置导航栏统一外观,示例代码(Xamarin.iOS/MAUI场景):
if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0)) { var navBarAppearance = new UINavigationBarAppearance(); // 配置为不透明背景,也可调用ConfigureWithTransparentBackground适配透明导航栏需求 navBarAppearance.ConfigureWithOpaqueBackground(); // 按需自定义导航栏背景色、标题文字样式 navBarAppearance.BackgroundColor = UIColor.SystemBlue; navBarAppearance.TitleTextAttributes = new UIStringAttributes { ForegroundColor = UIColor.White }; // 同时应用普通状态和滚动边缘状态的外观 UINavigationBar.Appearance.StandardAppearance = navBarAppearance; UINavigationBar.Appearance.ScrollEdgeAppearance = navBarAppearance; }
问题2:ACR UserDialogs日期选择器从滚轮变为日历样式
原因
iOS 14及以上系统中,UIDatePicker的默认preferredDatePickerStyle从滚轮样式调整为自动样式,系统会优先展示新版日历选择器,旧版本ACR UserDialogs未适配该属性的自定义配置,导致默认走系统新样式。
问题现象截图:
解决方法
方法1(推荐):升级ACR UserDialogs到最新稳定版
最新版本库已新增iOS日期选择器样式的配置参数,调用时显式指定滚轮样式即可,示例代码:
var dateConfig = new DatePromptConfig { // 仅iOS平台生效,指定为滚轮样式 iOSPickerStyle = iOSDatePickerStyle.Wheels }; var result = await UserDialogs.Instance.DatePromptAsync(dateConfig);
方法2:全局修改UIDatePicker默认样式
如果暂时无法升级依赖库,可以在iOS项目中全局设置UIDatePicker的默认样式,在AppDelegate的FinishedLaunching方法中添加以下代码:
if (UIDevice.CurrentDevice.CheckSystemVersion(14, 0)) { UIDatePicker.Appearance.PreferredDatePickerStyle = UIDatePickerStyle.Wheels; }
内容的提问来源于stack exchange,提问作者helper
相关产品推荐
相关产品推荐

