可以使用 Ionic 2 更改 phone 和平板电脑的布局吗?

Possible to change layout for phone and tablets using Ionic 2?

我看到 Ionic 2 有一个响应式网格系统,但它似乎只能让您创建网格样式布局。

我正在寻找可以让我在平板电脑上以一种方式显示视图,而在 phone 上以另一种方式显示视图的东西。在这个特定的例子中,我有一份工作清单。如果是平板电脑,我还想在列表右侧显示地图并将其绘制出来。我理解如何制作地图,但我如何分辨他们使用的是什么并显示正确的 UI?

您可以使用 platform information:

来决定布局的显示方式
Platform Name   Description
android on a device running Android.
cordova on a device running Cordova.
core    on a desktop device.
ios on a device running iOS.
ipad    on an iPad device.
iphone  on an iPhone device.
mobile  on a mobile device.
mobileweb   in a browser on a mobile device.
phablet on a phablet device.
tablet  on a tablet device.
windows on a device running Windows.

通过使用基础 platform 信息,您可以显示或隐藏 tablet(或 ipad)的内容,只需简单地执行以下操作:

this.isTabletOrIpad = this.platform.is('tablet') || this.platform.is('ipad');

然后通过使用 *ngIf 或您在视图中需要的任何内容,或使用 isTabletOrIpad 属性 来决定是否初始化地图。

与@sebaferreras 类似,您可以使用 Platform Name 中列出的名称,但我建议将其与 showWhen 属性结合使用。

The showWhen attribute takes a string that represents a platform or screen orientation. The element the attribute is added to will only be shown when that platform or screen orientation is active.

此方法封装了平台 class 逻辑,这意味着您无需在 Page.ts 文件中执行任何操作,您唯一需要担心的代码将在 HTML.

例子

如果您希望某些代码仅在平板电脑屏幕上可见

<div showWhen="tablet">
    All content inside here will be visible on tablet devices
</div>

也选择 ShowWhen documentation for more information. They also offer a HideWhen 属性。

备注

如以下评论所述

  • showWhen 方法将仅应用 display: none; 属性 到元素,这意味着您的 HTML 仍将被渲染 无论设备类型如何。
  • 如果您采用 *ngIf 方法,它只会加载 HTML 内容 如果符合规则。

性能方面 *ngIf 对您来说可能是更好的选择,但在其他情况下 showWhen 可能更有利(我试图为其他读者保留这个通用性)。