1. 程式人生 > >司慶活動總結

司慶活動總結

樣式 分析 使用 需要 包括 1.2 而且 單位 ios

主要功能:根據用戶所選答案生成對應的圖片
選用框架:html2canvas
選用理由:

  1. 時間急
  2. api簡單
  3. github上星比較多,那說明使用的人比較多,遇到的問題應該在issue上能找到解決方案??(後面打臉很舒服??)

遇到問題及解決:
階段1
初始版本的時候,策劃測試通過,但是UI文案需要修改

階段2
更新UI文案之後,測試的安卓機手機都沒問題,但發現測試的所有ios生成的圖片都空白了。(上面那個按鈕不是生成的)
分析問題:看了報錯的原因,定位到對應的源碼,發現其中有一張圖片的寬高讀不出來,直接導致html2canvas報錯了。檢查了一下css, 我也沒用它不支持的css屬性啊。去issue看有沒有人遇到這個問題,沒有??
問題修復:出現問題之前沒改過js代碼,只是更換了的圖片和css的樣式寫法。於是我將css樣式寫法改回上一次的
修復結果:部分ios可以生成圖片了。但還有個別版本:ios11.2 ios12還是同樣一片空白。
技術分享圖片

技術分享圖片 技術分享圖片

階段3
針對ios個別版本進行修復,問題仍然是讀不出某張圖片的信息
分析問題:獲取不到某張圖片的寬高,首先我先排除是圖片沒有load出來的原因,因為一開始就做了預加載,而且在結果頁裏圖片都已經顯現出來了。那會不會是因為雪碧圖的原因呢,因為每次讀不出來的那張圖片都是雪碧圖(它的源碼對背景圖的解析方式看不懂。。。)
問題修復:我把要生成圖片那頁的背景圖(包括雪碧圖)都拆改成img
修復結果:哈,發現成功了!!而且發現把背景圖改成img之後,圖片立刻清晰了好多!但是高興的太早了...當玩多幾次的時候發現,頁面好像有點奇怪哦。圖一是正確生成的圖,圖二、三是由問題的。
技術分享圖片 技術分享圖片 技術分享圖片

階段4
還是針對ios個別版本,這次問題變成時不時正常、時不時文字錯位或消失
分析問題:這次沒有任何的報錯,就是純粹的bug!掙紮了半天決定放棄該插件了??,一直耗著又完全沒頭緒解決問題也是浪費時間。
問題修復:於是轉用createjs,它就是對canvas進行了一層封裝,api還算簡單。這裏關鍵點主要有兩個:

  1. 圖片的位置問題。為了兼容各個屏幕大小的手機,css我一直用的是rem,目前來說效果還算可以,比px少一點坑。所有我決定js這裏也是用rem作為單位。ui是以750做為尺寸的,為了方便計算,我就取了7.5這個基數,就是一屏width=7.5rem。那js計算每1rem就等於:var rem = (widthOfWinow / 7.5)
  2. canvas模糊的問題。這跟手機像素比有關,它就是canvas的實際大小和渲染大小比。所以首先需要計算出像素比,將canvas.width和canvas.height放大到canvas.style.width/height的像素比倍數。當然,canvas裏其他元素的位置也要放大到相應的倍數。

最後
終於測試通過。

司慶活動總結