Heim > Web-Frontend > uni-app > So beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau

So beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau

PHPz
Freigeben: 2023-04-27 09:27:37
Original
1131 Leute haben es durchsucht

Kürzlich sind bei der Entwicklung einer Bildvorschaufunktion mit uniapp einige Probleme aufgetreten. Insbesondere beim Aufrufen der integrierten Bildvorschaukomponente von uniapp wird die Positionierung des Bildes verschoben, was sehr ärgerlich ist. Nach langer Fehlerbehebung und Recherche habe ich endlich die Lösung gefunden. Teile meine Erfahrungen und hoffe, dass sie für alle hilfreich sein können.

Problembeschreibung

Werfen wir zunächst einen Blick auf die spezifische Problemleistung. Wenn Sie die Methode uni.previewImage zur Vorschau von Bildern in Uniapp verwenden, sind die Bilder falsch ausgerichtet. Wie im Bild unten gezeigt: uni.previewImage 方法预览图片时,出现了So beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau的情况。如下图所示:

So beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau

可以看到,图片定位偏差较大,和我们在页面上看到的图片位置有所偏差。

问题原因

接下来,我们来分析一下这个问题的原因。通过查阅uniapp官方文档,我们可以得知 uni.previewImage 方法的使用方式如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

uni.previewImage({

  urls: [], // 需要预览的图片链接列表

  current: ''// 当前显示图片的链接,不填则默认为urls的第一张

  indicator: true, // 是否显示图片指示器

  loop: true, // 是否可以循环预览

  longPressActions: { // 长按图片显示操作菜单

    itemList: ['发送给朋友''保存图片''收藏'],

    success: function(data) {

      console.log('success:' + data.tapIndex);

    },

    fail: function(err) {

      console.log('fail:', err.errMsg);

    }

  }

})

Nach dem Login kopieren

其中,重点关注 current 参数。这个参数是用来设置预览图片的初始位置的。如果不设置,系统会默认将图片位置定位到第一张。但是,如果图片是被其他元素遮挡或者偏移过的,那么就会产生问题。

解决方案

那么,问题该如何解决呢?在经过多次实验和研究后,我发现了一个比较简单有效的解决方法,即使用 uni.getImageInfo 方法获取图片信息,然后根据图片信息的宽高比例进行位置调整。

具体来说,解决方法如下:

  1. 使用 uni.getImageInfo
  2. So beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau
    Sie können sehen, dass die Bildpositionierung stark von der Position des Bildes abweicht, das wir auf der Seite sehen.
  1. Ursache des Problems

Als nächstes analysieren wir die Ursache dieses Problems. Durch Konsultieren der offiziellen Uniapp-Dokumentation können wir erfahren, dass die Methode uni.previewImage wie folgt verwendet wird:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

uni.getImageInfo({

  src: 'https://img.php.cn/upload/article/000/000/068/168255885723504.png', // 图片链接

  success: function(res) {

    // 图片加载成功,获取图片信息

    const width = res.width; // 图片宽度

    const height = res.height; // 图片高度

    const aspectRatio = width / height; // 图片宽高比例

    // 根据宽高比例进行图片位置调整

  },

  fail: function(err) {

    // 图片加载失败

    console.log(err);

  }

})

Nach dem Login kopieren

Konzentrieren Sie sich dabei auf den Parameter current. Mit diesem Parameter wird die Anfangsposition des Vorschaubildes festgelegt. Wenn dies nicht festgelegt ist, positioniert das System das Bild standardmäßig auf dem ersten Bild. Allerdings kann es zu Problemen kommen, wenn das Bild durch andere Elemente verdeckt oder versetzt wird.

Lösung

🎜Also, wie kann man das Problem lösen? Nach vielen Experimenten und Recherchen habe ich eine relativ einfache und effektive Lösung gefunden, die darin besteht, die Methode uni.getImageInfo zu verwenden, um Bildinformationen abzurufen und dann die Position entsprechend dem Breiten- und Höhenverhältnis des Bildes anzupassen Bildinformationen. 🎜🎜Konkret lautet die Lösung wie folgt: 🎜
    🎜Verwenden Sie die Methode uni.getImageInfo, um Bildinformationen zu erhalten. 🎜🎜

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    // 计算图片上下偏移量

    const windowHeight = uni.getSystemInfoSync().windowHeight; // 屏幕高度

    const marginTop = (windowHeight - width / aspectRatio) / 2; // 上侧偏移量

    const marginBottom = (windowHeight + width / aspectRatio) / 2; // 下侧偏移量

    // 调用预览图片组件

    uni.previewImage({

      urls: [], // 需要预览的图片链接列表

      current: ''// 当前显示图片的链接,不填则默认为urls的第一张

      indicator: true, // 是否显示图片指示器

      loop: true, // 是否可以循环预览

      longPressActions: { // 长按图片显示操作菜单

        itemList: ['发送给朋友''保存图片''收藏'],

        success: function(data) {

          console.log('success:' + data.tapIndex);

        },

        fail: function(err) {

          console.log('fail:', err.errMsg);

        }

      },

      // 调整图片位置

      // 注意:这里只调整上下偏移量,如果需要左右偏移量也可以进行计算

      success: function() {

        uni.pageScrollTo({

          scrollTop: marginTop,

          duration: 0

        });

      },

      complete: function() {

        uni.pageScrollTo({

          scrollTop: 0,

          duration: 0

        });

      }

    })

    Nach dem Login kopieren
    🎜🎜 Passen Sie die Position entsprechend dem Breiten- und Höhenverhältnis der Bildinformationen an. 🎜🎜rrreee🎜Mit der oben genannten Methode können wir das Problem der falschen Positionierung der Bildvorschau lösen, indem wir das Breiten- und Höhenverhältnis der Bildinformationen ermitteln und den Positionsversatz anpassen. 🎜🎜Fazit🎜🎜Das Obige ist die Lösung, die ich durch Recherche und Zusammenfassung erhalten habe. Ich hoffe, es hilft allen. In tatsächlichen Projekten können wir diese Techniken flexibel einsetzen, um die Entwicklungseffizienz zu verbessern und die Benutzererfahrung zu optimieren. 🎜

Das obige ist der detaillierte Inhalt vonSo beheben Sie den Positionierungsfehler der Uniapp-Bildvorschau. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage