嗯 ios真机14 plus
具体什么问题,这部分代码我提交过一个 PR
原来3.8.3切换场景前先c中调用:
+(void)setOrientation:(NSString*)dir{
if(@available(iOS 16.0, *)) {
UIScene *windowScene = [[[UIApplication sharedApplication] connectedScenes] anyObject];
UIWindowSceneGeometryPreferencesIOS *preferences = nil;
if ([dir isEqualToString:@"H"]){
preferences = [[UIWindowSceneGeometryPreferencesIOS alloc] initWithInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
}else {
preferences = [[UIWindowSceneGeometryPreferencesIOS alloc] initWithInterfaceOrientations:UIInterfaceOrientationMaskPortrait];
}
[(UIWindowScene *)windowScene requestGeometryUpdateWithPreferences:preferences errorHandler:^(NSError * _Nonnull error) {
}];
}//执行了这段代码
然后ts调用:view.setDesignResolutionSize
然后监听: if (sys.isMobile) {
screen.on(“window-resize”, this.setResetScreenSize, this);
} (这个3.8.4好像无效了)
====
,现在升级3.8.4好像必须要监听:
window.addEventListener("resize", this.setResetScreenSize.bind(this, "resize"));
window.addEventListener("orientationchange", this.setResetScreenSize.bind(this, "orientationchange"));
改成这个就好了。
有解决过模拟器的问题,你可以用社区版本是一下。
你好,你这个是屏幕旋转的时候,没触发到 window-resize?
单纯的setDesignResolutionSize并不会触发window大小的改变。
另外,根据你的描述,383没问题?
我是先调用底层屏幕旋转,再监听screen.on(“window-resize”, this.resetScreenSize, this);
现在升级后 改为用 window.addEventListener(“resize”, this.resetScreenSize.bind(this, “resize”)); 去监听就好了
别的就不知道了,我又看了我之前3.8.3的真机发的版本确实是好的,3.8.4改成window.addEventListener(“resize”, this.resetScreenSize.bind(this, “resize”)); 去监听就好了,应该是他底层横竖屏切完后会自动调用resize吧,我就改了这里
383用的是dashboard上发布的正式版吗?
另外,如果screen.on放在屏幕旋转之前监听呢
先旋转再监听,之后再旋转能收到回调吗?还是只旋转一次?
24年规划还有几个版本?
383没问题,384要手动触发canvas-resize,不过可能383才是错误的
是否有可复现demo呢,我这边可以看看
简单的挂脚本执行 view.setDesignResolutionSize 方法,看有没有触发canvas-resize 回调就知道了,在383是能行,384是不行的。我前两天有跟踪看383能行是因为node下的changeposition事件触发,才导致canvas-resize回调生效,384就不行了
老哥解决了吗,我也卡这了
2.x可以在偏好设置改的 但是现在不让了,不知道在干嘛
更新到最新分支正常了