Maison interface Web uni-app Comment résoudre l'erreur de positionnement de l'aperçu de l'image Uniapp

Comment résoudre l'erreur de positionnement de l'aperçu de l'image Uniapp

Apr 27, 2023 am 09:01 AM

Récemment, j'ai rencontré quelques problèmes lors de l'utilisation d'uniapp pour développer une fonction de prévisualisation d'image. Plus précisément, lors de l'appel du composant de prévisualisation d'image intégré d'uniapp, le positionnement de l'image est décalé, ce qui est très ennuyeux. Après de nombreuses recherches et dépannages, j'ai enfin trouvé la solution. Partagez mon expérience, j'espère que cela pourra être utile à tout le monde.

Description du problème

Tout d'abord, examinons les performances spécifiques du problème. Lorsque vous utilisez la méthode uni.previewImage pour prévisualiser les images dans uniapp, les images sont mal alignées. Comme le montre l'image ci-dessous : uni.previewImage 方法预览图片时,出现了Comment résoudre lerreur de positionnement de laperçu de limage Uniapp的情况。如下图所示:

Comment résoudre lerreur de positionnement de laperçu de limage Uniapp

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

问题原因

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

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);
    }
  }
})
Copier après la connexion

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

解决方案

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

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

  1. 使用 uni.getImageInfo
  2. Désalignement de l'image
    On peut voir que l'écart de positionnement de l'image est important et qu'il s'écarte de la position de l'image que nous voyons sur la page.
  1. Cause du problème

Ensuite, analysons la cause de ce problème. En consultant la documentation officielle d'uniapp, on peut savoir que la méthode uni.previewImage est utilisée de la manière suivante :

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);
  }
})
Copier après la connexion

Parmi elles, focus sur le actuel code> paramètre. Ce paramètre est utilisé pour définir la position initiale de l'image d'aperçu. S'il n'est pas défini, le système positionnera l'image sur la première par défaut. Cependant, des problèmes peuvent survenir si l'image est obscurcie ou décalée par d'autres éléments.

Solution

#🎜🎜#Alors, comment résoudre le problème ? Après de nombreuses expériences et recherches, j'ai trouvé une solution relativement simple et efficace, qui consiste à utiliser la méthode uni.getImageInfo pour obtenir des informations sur l'image, puis à ajuster la position en fonction du rapport largeur/hauteur de l'image. informations sur les images. #🎜🎜##🎜🎜# Plus précisément, la solution est la suivante : #🎜🎜#
    #🎜🎜#Utilisez la méthode uni.getImageInfo pour obtenir des informations sur l'image. #🎜🎜##🎜🎜#
    // 计算图片上下偏移量
    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
        });
      }
    })
    Copier après la connexion
    #🎜🎜##🎜🎜#Ajustez la position en fonction du rapport largeur/hauteur des informations de l'image. #🎜🎜##🎜🎜#rrreee#🎜🎜#Grâce à la méthode ci-dessus, nous pouvons résoudre le problème du mauvais positionnement de l'aperçu de l'image en obtenant le rapport hauteur/largeur des informations sur l'image et en ajustant le décalage de position. #🎜🎜##🎜🎜#Conclusion#🎜🎜##🎜🎜#Ce qui précède est la solution que j'ai obtenue grâce à la recherche et au résumé. J'espère que cela aide tout le monde. Dans les projets réels, nous pouvons utiliser ces techniques de manière flexible pour améliorer l’efficacité du développement et optimiser l’expérience utilisateur. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP? Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP? Mar 27, 2025 pm 04:59 PM

L'article traite de divers types de tests pour les applications UNIAPP, y compris l'unité, l'intégration, les tests fonctionnels, UI / UX, les performances, la plate-forme multiplateforme et la sécurité. Il couvre également une compatibilité multiplateforme et recommande des outils comme JES

Comment pouvez-vous réduire la taille de votre package d'application UNIAPP? Comment pouvez-vous réduire la taille de votre package d'application UNIAPP? Mar 27, 2025 pm 04:45 PM

L'article traite des stratégies pour réduire la taille du package UNIAPP, en se concentrant sur l'optimisation du code, la gestion des ressources et les techniques comme le fractionnement du code et le chargement paresseux.

Quels outils de débogage sont disponibles pour le développement UNIAPP? Quels outils de débogage sont disponibles pour le développement UNIAPP? Mar 27, 2025 pm 05:05 PM

L'article traite des outils de débogage et des meilleures pratiques pour le développement de l'UNIAPP, en se concentrant sur des outils comme HBuilderx, WeChat Developer Tools et Chrome Devtools.

Comment pouvez-vous utiliser le chargement paresseux pour améliorer les performances? Comment pouvez-vous utiliser le chargement paresseux pour améliorer les performances? Mar 27, 2025 pm 04:47 PM

Le chargement paresseux dépasse les ressources non critiques pour améliorer les performances du site, réduire les temps de chargement et l'utilisation des données. Les pratiques clés incluent la priorité au contenu critique et l'utilisation d'API efficaces.

Comment pouvez-vous optimiser les images pour les performances Web à UniApp? Comment pouvez-vous optimiser les images pour les performances Web à UniApp? Mar 27, 2025 pm 04:50 PM

L'article discute de l'optimisation des images dans UniaPP pour de meilleures performances Web par compression, conception réactive, chargement paresseux, mise en cache et utilisation du format WebP.

Comment UniApp gère-t-il la configuration et le style global? Comment UniApp gère-t-il la configuration et le style global? Mar 25, 2025 pm 02:20 PM

UniApp gère la configuration globale via Manifest.json et le style via app.vue ou app.scss, en utilisant Uni.scss pour les variables et les mixins. Les meilleures pratiques incluent l'utilisation de SCSS, de styles modulaires et de conception réactive.

Quelles sont les propriétés calculées à UniApp? Comment sont-ils utilisés? Quelles sont les propriétés calculées à UniApp? Comment sont-ils utilisés? Mar 25, 2025 pm 02:23 PM

Les propriétés calculées de l'UNIAPP, dérivées de Vue.js, améliorent le développement en fournissant une gestion des données réactive, réutilisable et optimisée. Ils mettent automatiquement à jour lorsque les dépendances changent, offrant des avantages de performance et simplifiant la gestion de l'État

Quels sont les modèles communs pour gérer des structures de données complexes dans UNIAPP? Quels sont les modèles communs pour gérer des structures de données complexes dans UNIAPP? Mar 25, 2025 pm 02:31 PM

L'article discute de la gestion des structures de données complexes dans l'UNIAPP, en se concentrant sur des modèles tels que Singleton, Observer, Factory et State, et des stratégies pour gérer les changements d'état de données à l'aide de l'API de composition Vuex et Vue 3.

See all articles