微信小遊戲廣告位iphonex底部適配問題

最近在公司開發遊戲,使用cocos creator作微信小遊戲,遇到一個很噁心的問題,如圖:算法

這裏寫圖片描述

如圖所示,微信的廣告位被iphonex的底部bar給彈出了一點位置,沒有靠在底部。小程序

在這裏不得不吐槽一下微信的小程序接口還有個噁心的地方,那就是他的廣告style沒有bottom,right屬性,使得置底部必須使用算法計算。也就是winsize.height-廣告高度(realheight),居中是winsize.width-廣告寬度/2。微信

這裏寫圖片描述

而就算如此,在Android和iphone普通手機上是沒有適配問題的,徹底居中靠底,而一到高貴的iPhonex上,就會出現廣告位一下子靠底部,一會又被底部黑色bar頂出一點位置,要解決這個蛋疼的問題,以下解決:iphone

showBannerAd(){
            var wxFunc = this.getWXFunction('createBannerAd');
            if (typeof(wxFunc)!='undefined' && wxFunc!=null){
                var phone = wx.getSystemInfoSync();
                console.log(phone);
                var w = phone.screenWidth / 2;
                var h = phone.screenHeight;
                let bannerAd = wxFunc({
                    adUnitId: 'adunit-549b2e8b53ad8e21',
                    style: {
                        width: 300,
                        //height:40,
                        top:0,
                        left:0
                    }
                });
                bannerAd.onResize(function(){
                    bannerAd.style.left = w - bannerAd.style.realWidth/2+0.1;
                    bannerAd.style.top = h - bannerAd.style.realHeight+0.1;
                    console.log(bannerAd);
                })
                bannerAd.show();
                return bannerAd;
            }else{
                return;
            }
        }

注意幾點:this

  1. 建立banner的默認位置不須要修改,反正也沒用
  2. 在onresize中重置style來改變位置
  3. 使用realwidth和realheight做爲相對位移(這兩項必須是在banner已經建立完成的狀況下)
  4. left和top都加上0.1,不加就會被iphonex該死的底部bar給頂上去,並且時而頂上去,時而又是正常,至今不知道爲何
  5. onresize以後再使用show方法將廣告banner給show出來
相關文章
相關標籤/搜索