Ionic Photo Viewer在ios上不起作用

时间:2018-07-19 09:49:17

标签: ionic-framework ionic-native photoviewer

我正在使用Ionic Photo Viewer全屏显示图像。我的HTML是:-

v

在TypeScript上:-

<ion-slides>
  <ion-slide col-12 *ngFor="let image of businessImages | async">
     <div class="main-slider-image" [defaultImage]="'assets/imgs/default_image_slider.png'" [lazyLoad]="image.thumb400Url" [offset]="100" (click)="openImage(image.originalUrl)">
     </div>
  </ion-slide>
</ion-slides>

在Android上,其工作方式如下:-

Click here to see Android version

另一方面,iPhone上的运行方式如下:-

Click here to see iPhone version

在iPhone上,照片查看器无法打开照片。我尝试过:-

openImage(url) {
    this.photoViewer.show(url, "", { share: false });
}

但是这也不起作用。如果您有任何解决方法的想法,请分享。谢谢

3 个答案:

答案 0 :(得分:1)

这个问题真的很疯狂,不得不花费大量时间来找出解决方案。解决方案是'options'变量中的所有参数都是必需的。

按照这个:

const options = {
    share: true, // default is false
    closeButton: true, // default is true
    copyToReference: true, // default is false
    headers: "",  // If it is not provided, it will trigger an exception
    piccasoOptions: { } // If it is not provided, it will trigger an exception
};

this.photoViewer.show(url, "", options);

答案 1 :(得分:0)

至少我必须还原到1.1.11(从NPM找到)才能正确显示IOS。对于Android,似乎可以使用最新版本。

Share在1.1.11中似乎不适用于IOS。在Android最新的照片查看器插件中,它似乎可以正常工作。所以现在我有:

  private viewPhoto(url: string): void {
    if (url && url != 'assets/images/profile.png') {
      this.photoViewer.show(url, '', { share: this.platform.is('android') });
    }
  }

而且..我认为讨论这些的正确地点是https://github.com/sarriaroman/photoviewer/issues

另外,我正在考虑使用另一个插件https://github.com/Riron/ionic-img-viewer。一些Photoviewer问题与此相关,但尚未尝试过。

答案 2 :(得分:0)

我有相同的错误,我对此解决了

ionic cordova plugin rm com-sarriaroman-photoviewer
ionic cordova plugin add com-sarriaroman-photoviewer@1.1.18
npm install --save @ionic-native/photo-viewer

在您的函数上,如果设备使用的是ios,则解码URIComponent是答案

  showImage(url,title) {
    var options = {
      share: true, // default is false
      closeButton: true, // iOS only: default is true
      copyToReference: true // iOS only: default is false
    };

    if (this.platform.is("ios")) {
      url = decodeURIComponent(url);
    }

    this.photoViewer.show(url, title, options);
  }