Qt Quick 2 iOS Notch Avoidance - PullRequest
       18

Qt Quick 2 iOS Notch Avoidance

1 голос
/ 05 апреля 2019

Мое приложение полноэкранное.

Как избежать размещения элементов за меткой и домашней линией на устройствах iOS с меткой при использовании QT Quick 2?

Мое приложение работает на устройствах си без надреза, и я стараюсь избегать пустой области сверху и снизу устройств, которые не имеют надреза.

Ответы [ 2 ]

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

Я связался с QT Support и получил реальный ответ.Используйте поля безопасной области при запуске приложения в полноэкранном режиме.

 #include <qpa/qplatformwindow.h>

 void MainWindowBackend::setWindow(QObject *window)
 {
      QWindow *qwin = qobject_cast<QWindow*>(window);
      QPlatformWindow *pWin = qwin->handle();
      QMargins safeArea = pWin->safeAreaMargins();
 }

также добавьте

 QT += gui-private

в свой файл pro

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

Если у кого-то еще есть такая же проблема.

Сначала сделайте ваше приложение не полноэкранным на iOS, это создаст черные области вверху и внизу вашего приложения.

Вы можете изменитьцвет черных областей для лучшего соответствия вашему приложению:

notch.h

#ifndef NOTCH_H
#define NOTCH_H

#include <QObject>

class Notch : public QObject{
  Q_OBJECT
public:
  Notch();
};

#endif

notch.mm

#include <UIKit/UIKit.h>
#include "notch.h"

Notch::Notch()
{
    //Top
    UIView *statusBar = (UIView *)[[UIApplication sharedApplication] valueForKey:@"statusBar"];
    statusBar.backgroundColor = [UIColor colorWithRed:0.09 green:0.14 blue:0.19 alpha:1.0];

    //Bottom
    UIApplication *app = [UIApplication sharedApplication];
    app.windows.firstObject.backgroundColor = [UIColor whiteColor];
}

Теперь просто вызовите Notch ();в вашем файле main.cpp

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