Rumah > hujung hadapan web > uni-app > teks badan

Bagaimana untuk menyelesaikan ralat kedudukan dalam pratonton imej uniapp

PHPz
Lepaskan: 2023-04-27 09:27:37
asal
1095 orang telah melayarinya

Baru-baru ini, saya menghadapi beberapa masalah semasa menggunakan uniapp untuk membangunkan fungsi pratonton gambar. Khususnya, apabila memanggil komponen pratonton imej terbina dalam uniapp, kedudukan imej diimbangi, yang sangat menjengkelkan. Selepas banyak penyelesaian masalah dan penyelidikan, akhirnya saya menemui penyelesaiannya. Kongsikan pengalaman saya, semoga dapat memberi manfaat kepada semua.

Penerangan Masalah

Mula-mula, mari kita lihat prestasi masalah khusus. Apabila menggunakan kaedah uni.previewImage untuk pratonton imej dalam uniapp, imej tidak sejajar. Seperti yang ditunjukkan dalam rajah di bawah:

Bagaimana untuk menyelesaikan ralat kedudukan dalam pratonton imej uniapp

Dapat dilihat bahawa kedudukan imej sangat menyimpang daripada kedudukan imej yang kita lihat pada halaman.

Punca masalah

Seterusnya, mari analisa punca masalah ini. Dengan merujuk kepada dokumentasi uniapp rasmi, kita boleh mengetahui bahawa kaedah uni.previewImage digunakan seperti berikut:

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);
    }
  }
})
Salin selepas log masuk

Antaranya, fokus pada parameter current. Parameter ini digunakan untuk menetapkan kedudukan awal imej pratonton. Jika tidak ditetapkan, sistem akan meletakkan imej kepada yang pertama secara lalai. Walau bagaimanapun, masalah boleh timbul jika imej dikaburkan atau diimbangi oleh unsur lain.

Penyelesaian

Jadi, bagaimana untuk menyelesaikan masalah? Selepas banyak percubaan dan penyelidikan, saya menemui penyelesaian yang agak mudah dan berkesan, iaitu menggunakan kaedah uni.getImageInfo untuk mendapatkan maklumat imej, dan kemudian melaraskan kedudukan mengikut nisbah lebar dan ketinggian maklumat imej.

Secara khusus, penyelesaiannya adalah seperti berikut:

  1. Gunakan kaedah uni.getImageInfo untuk mendapatkan maklumat imej.
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);
  }
})
Salin selepas log masuk
  1. Laraskan kedudukan mengikut nisbah bidang maklumat imej.
// 计算图片上下偏移量
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
    });
  }
})
Salin selepas log masuk

Melalui kaedah di atas, kita boleh menyelesaikan masalah kedudukan pratonton imej yang salah dengan mendapatkan nisbah aspek maklumat imej dan melaraskan offset kedudukan.

Kesimpulan

Di atas adalah penyelesaian yang saya dapat melalui kajian dan ringkasan. Semoga ia membantu semua orang. Dalam projek sebenar, kami boleh menggunakan teknik ini secara fleksibel untuk meningkatkan kecekapan pembangunan dan mengoptimumkan pengalaman pengguna.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat kedudukan dalam pratonton imej uniapp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan