首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >XR状态栏文本保持黑色,但不保留iPhone 8或iPad。

XR状态栏文本保持黑色,但不保留iPhone 8或iPad。
EN

Stack Overflow用户
提问于 2019-06-06 11:35:34
回答 3查看 412关注 0票数 0

使用googleland中的技术,我已经将我的iOS状态条文本设置为白色。除了将文本设置为黑色的iPhone XR之外,这一切都很好。

我发现处理这些问题的技巧都是Swift和目标C相关的。Xamarin.Forms的技术是什么?

在薄片里我有

  • 状态栏样式=白色
  • 基于视图控制器的状态栏外观=否

基于这个相关的问题,iPhone XR上的状态栏文本颜色是不同的,我尝试了

  • 基于视图控制器的状态栏外观=是

但这会使所有iOS设备状态栏变成黑色,包括XR。然后讨论一些Swift代码,我不知道Xamarin中的模拟代码。

基于这个相关问题,https://forums.xamarin.com/discussion/89840/change-status-bar-color-on-ios

它是接近的,但它改变了酒吧的背景色。我在statusBar对象上找不到任何谈论文本颜色的属性。

基于这个相关问题,https://forums.xamarin.com/discussion/17922/navigationpage-statusbar-color

使用SetStatusBarStyle也不会影响XR。

注意:我不使用NavigationPage

EN

回答 3

Stack Overflow用户

发布于 2019-06-06 12:14:28

你们关系很好。似乎您需要使用自定义渲染器。在ViewController中,您将将PreferredStatusBarStyle函数覆盖到三个枚举在这里显示中的任何一个,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public override UIStatusBarStyle PreferredStatusBarStyle()
{
    return UIStatusBarStyle.LightContent;
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-07 00:31:32

SWIFT4.2解决方案与NavigationController

第一步:

打开您的info.plist并插入一个名为的新键“基于视图控制器的状态栏外观”YES,让每个VC使用自己的status属性。

第二步

在每个VC中,重写如下的preferredStatusBarStyle属性:

override var preferredStatusBarStyle : UIStatusBarStyle { return .lightContent //.default for black style }

最后一步

重写自定义preferredStatusBarStyle类中的NavigationController属性:

` `class : UINavigationController {

覆盖var preferredStatusBarStyle : UIStatusBarStyle {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if let topVC = viewControllers.last {
    //return the status property of each VC, look at step 2
    return topVC.preferredStatusBarStyle  
}

return .default

}`

票数 0
EN

Stack Overflow用户

发布于 2019-06-11 01:44:08

我知道我们现在不应该使用UIStatusBarStyle。但在我的XR模拟器上,它确实可以在iOS 12.2上工作。我将密钥添加到我的info.plist中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>

状态栏的文本更改为白色:

使用代码更改颜色也很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;

您可以利用它动态地调整状态栏样式。

但是,为指定的页面创建自定义渲染器是另一种选择。首先,在UIViewControllerBasedStatusBarAppearance中将info.plist设置为true。

然后页面呈现器可以类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[assembly: ExportRenderer(typeof(MainPage), typeof(CustomPageRenderer))]
namespace App.iOS
{
    public class CustomPageRenderer : PageRenderer
    {
        public override UIStatusBarStyle PreferredStatusBarStyle()
        {
            return UIStatusBarStyle.LightContent;
        }
    }
}

MainPage是窗体上的内容页类。我把它设置为应用程序的MainPage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56484037

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文