微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 有人知道如何检测Nativescript的方向更改吗?

我为屏幕创建了两个xml文件.一个名为“login-page.port.xml”,另一个名为“login-page.land.xaml”.

有没有办法以编程方式检测应用程序中的方向变化?

谢谢,
Keks

解决方法:

是的,有一种方法可以检测应用程序中的方向变化.最简单的方法是在您想要获得方向的页面中;将已加载和已卸载的事件添加到page.xml文件中:

<Page loaded="pageLoaded" unloaded="pageUnloaded">

在你的page.js文件中;添加这样的代码

var application=require('application');
exports.pageLoaded = function() {
  application.on(application.orientationChangedEvent, setorientation);
};

exports.pageUnloaded = function() {
  application.off(application.orientationChangedEvent, setorientation);
}

function setorientation(args) {
   // Will console out the new Orientation
   console.log(args.newValue);
}

几个笔记;
你要添加&在进入和退出页面删除事件监听器;否则,监听器是全局的,即使您在另一个页面上,当方向发生变化时也会继续触发.
2.您可以为此事件添加多个侦听器,因此,如果您不删除侦听器,则每次重新加载此页面时,您将向该组添加此侦听器的另一个副本,因此它将触发多次因为你已经添加了它.
3.在v1.6.1中的android上,它们是方向触发中的错误. https://github.com/NativeScript/NativeScript/issues/1656(基本上如果你从横向开始,旋转它将无法检测到它.问题有我已经手动应用到我的代码的补丁).

现在看看你的实际例子;你是否意识到至少从1.6x版本的NativeScript开始,它只会加载当前设置为哪个方向的XML;但是在旋转时它不会加载另一个方向的xml.所以,如果你在景观;进入屏幕然后旋转它仍将使用Landscape xml文件.

现在所有这些说你可能会认真考虑查看我作为作者的nativescript-orientation插件,这个插件简化了处理屏幕方向,并允许你只有一个.xml文件,然后通过css更改东西.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。