cocos屏幕适配原理
1、定高会使更短的设备(如 iPad)上显示不全。
2、定宽会使更长的设备上显示不全。
3、使用自动外扩的方案,动态切换定高和定宽,确保任何情况下,UI 都不会被裁剪。
以下提供2D版本
public resize() {
let drs = cc.view.getDesignResolutionSize();
let s = cc.view.getFrameSize();
let ratio = s.width / s.height;
let drsRatio = drs.width / drs.height;
if (ratio > drsRatio) {
cc.view.setResolutionPolicy(cc.ResolutionPolicy.FIXED_HEIGHT);
} else {
cc.view.setResolutionPolicy(cc.ResolutionPolicy.FIXED_WIDTH);
}
}
以下提供3D版本
public resize() {
//v3.4.0之后改用screen.windowSize,之前使用view.getFrameSize();
let winSize = screen.windowSize;
let ratio = winSize.width / winSize.height;
let drs = view.getDesignResolutionSize();
let drsRatio = drs.width / drs.height;
if(ratio > drsRatio){
view.setResolutionPolicy(ResolutionPolicy.FIXED_HEIGHT);
} else{
view.setResolutionPolicy(ResolutionPolicy.FIXED_WIDTH);
}
}