typescript iPhone Xの判定とbodyタグへのクラス追加·削除を行うIonic3,Angular2 +サービス

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript iPhone Xの判定とbodyタグへのクラス追加·削除を行うIonic3,Angular2 +サービス相关的知识,希望对你有一定的参考价值。

import { Injectable } from '@angular/core';
import { Platform } from 'ionic-angular';

const iPhoneX = { height: 2436, width: 1125 };

@Injectable()
export class NotchService {

  constructor(
    private platform: Platform,
  ) {}

  init() {
    (<any>window).addEventListener('orientationchange', () => {
      console.log('orientationchange');
      this.onOrientationChanged();
    });

    this.onOrientationChanged();
  }

  private onOrientationChanged() {
    if (!this.platform.is('ios')) { return; }

    const ratio = (<any>window).devicePixelRatio || 1;
    const screen = {
      width : (<any>window).screen.width * ratio,
      height :  (<any>window).screen.height * ratio,
    };

    const isiPhoneXPortrait = screen.width === iPhoneX.width && screen.height === iPhoneX.height;
    const isiPhoneXLandscape = screen.width === iPhoneX.height && screen.height === iPhoneX.width;

    console.log(screen);
    console.log(`isiPhoneXPortrait = ${isiPhoneXPortrait}`);
    console.log(`isiPhoneXLandscape = ${isiPhoneXLandscape}`);


    if (isiPhoneXPortrait || isiPhoneXLandscape) {
      (<any>document).body.classList.add('iPhoneX');
    }

    if (isiPhoneXPortrait) {
      (<any>document).body.classList.remove('landscape');
      (<any>document).body.classList.add('portrait');
    } else if (isiPhoneXLandscape) {
      (<any>document).body.classList.remove('portrait');
      (<any>document).body.classList.add('landscape');
    }
  }
}

以上是关于typescript iPhone Xの判定とbodyタグへのクラス追加·削除を行うIonic3,Angular2 +サービス的主要内容,如果未能解决你的问题,请参考以下文章

ruby RubyでWindowsとUNIXの标准出力とエラー出力を抑止する

csharp System.Threading.Tasks.Taskの结果と例外のサンプル

text 20180320 idとclassの详细度

html RSSの取得と表示[HTMLで表示]

python HSVへの変换と青色の検出

python [Python] pathlibのglobとrglobのサンプル