-
Creator 版本: 3.3.0
-
目标平台: iOS真机(ip8 plus测试)
-
重现方式:任意页面添加webview组件, 设置widget组件,距离四边边距为0。浏览器和iOS模拟器显示正常,真机上无法全屏,右侧和下侧留白。
同样的设置,2.4.5版也没有问题。 -
之前哪个版本是正常的: 2.4.5
-
手机型号: ip8 plus
-
编辑器操作系统: macOS 11
-
重现概率: 必现
1年多了,最新的3.6.2还是这个问题,同样的配置,h5、android没问题,iOS有问题…
您好,这个问题有解决吗?
这个问题我们会验证一下,感谢反馈
2.x获取的是渲染分辨率,3.x获取的是实际分辨率,只有在6sp真机上才会出现,当iphone设置放大模式的时候也会异常
目前解决了,下面是修改的代码
// cocos-engine/native/cocos/ui/webview/WebViewImpl-ios.mm v3.6.3
- (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)height {
if (!self.uiWebView) {
[self setupWebView];
}
//1、得到当前屏幕的尺寸:
CGRect rect_screen = [[UIScreen mainScreen] bounds];
CGSize size_screen = rect_screen.size;
//2、获得scale:iPhone5和iPhone6是2,iPhone6Plus是3
CGFloat scale_screen = [UIScreen mainScreen].scale;
NSLog(@"scale_screen:%.f", scale_screen);
CGRect physics_screen = [[UIScreen mainScreen] nativeBounds];
CGSize physics_size_screen = physics_screen.size;
//3.获取当前屏幕的分辨率
CGFloat widthResolution = size_screen.width * scale_screen;
CGFloat heightResolution = size_screen.height * scale_screen;
CGFloat physics_scale = widthResolution/physics_size_screen.width;
CGRect newFrame = CGRectMake(x, y, width*physics_scale, height*physics_scale);
if (!CGRectEqualToRect(self.uiWebView.frame, newFrame)) {
self.uiWebView.frame = CGRectMake(x, y, width*physics_scale, height*physics_scale);
}
}
1赞
