строка состояния исчезла после полноэкранного видео в WKWebView только в iOS 12 - PullRequest
0 голосов
/ 02 сентября 2018

Как видите, это произошло только в iOS 12.

iOS 12 & emsp; emsp; emsp; emsp; emsp; emsp; emsp; & emsp; & emsp; iOS 11

enter image description here & EMSP; enter image description here

вот мой код:

import UIKit
import WebKit

class ViewController: UIViewController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webView = WKWebView(frame: UIScreen.main.bounds)
        view.addSubview(webView)
        webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        webView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        webView.loadHTMLString("<p><iframe src=\"https://www.youtube.com/embed/HCjNJDNzw8Y\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"\"></iframe></p>", baseURL: URL(string: "https://www.youtube.com/"))
        setNeedsStatusBarAppearanceUpdate()
    }
}

мой info.plist прямо ниже: enter image description here

Кто-нибудь знает, как это решить?

Я знаю, что если установить ключ View controller-based status bar appearance на YES, это поможет, но в этом случае это будет выглядеть так:

enter image description here

Существует неизвестная причина для изменения строки состояния с белого на черный, и что касается моего реального проекта в большом масштабе, так что было бы неплохо решить в исходной настройке, а не заставлять каждый ViewController наследовать от одного класса, который является подклассом из UIViewController или добавляет dynamic для переопределения prefersStatusBarHidden и preferredStatusBarStyle в расширении (здесь просто попробуйте заставить его показывать строку состояния обновления, когда View controller-based status bar appearance установлен в YES)

Надеюсь, есть решение для View controller-based status bar appearance, установленное на NO, которое будет очень полезно, спасибо.

здесь - это демонстрационный проект, он был создан Xcode9.4, не стесняйтесь попробовать его.

Ответы [ 4 ]

0 голосов
/ 08 апреля 2019

Используйте это решение:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoExitFullScreen:) name:@"UIWindowDidBecomeHiddenNotification" object:nil];
...
}

- (void)videoExitFullScreen:(id)sender
{
  [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
}

Ссылка больше здесь:

https://github.com/react-native-community/react-native-webview/issues/62

0 голосов
/ 11 декабря 2018

В конце я использовал категорию в target-c для решения этой проблемы. Я установил View controller-based status bar appearance на ДА и добавил код ниже

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

- (BOOL)prefersStatusBarHidden
{
    return NO;
} 

Что касается моего опыта, вы также должны реализовать приведенный выше код в UINavigationViewController. Кажется, у него есть своя реализация для этого. А также каждое окно, чтобы увидеть, существует ли rootViewController, если нет, то добавьте одно для него.

Хотя это решение немного обременительно, но именно этим я и решил свою проблему до сих пор.

0 голосов
/ 28 февраля 2019

Подписаться на

UIWindowDidBecomeHiddenNotification

событие

NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIWindowDidBecomeHiddenNotification"), HandleAction);

и установить состояние строки состояния в обработчике:

void HandleAction(NSNotification obj)
{
    UIApplication.SharedApplication.StatusBarHidden = false;
}
0 голосов
/ 23 октября 2018

Удалить следующее свойство из info.plist файла. и дайте это только программно.

Строка состояния изначально скрыта: НЕТ

Просмотр внешнего вида строки состояния на основе контроллера: НЕТ

Стиль строки состояния: UIStatusBarStyleLightContent

Это может быть работой для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...