我在我的应用中使用离子原生过渡插件。我正在使用slide up
转换页面。它可以工作,但是当状态更改时,它会在短时间内显示相同的页面,然后显示另一个页面(我要切换的页面)。这是github link。我尝试使用不同的默认选项值,但它并没有解决我的问题。任何帮助将不胜感激
答案 0 :(得分:0)
我不确定你的问题是否与我的相同(当转换到下一个/上一个状态开始时,它应该转换到的“新状态”在动画之前/期间的“旧视图”中显示)但这就是我所做的。我找到了一个解决方案,即在ionic.native-transitions(.min).js中对stateGo()函数的状态更改添加超时,这会导致它作为最后一个函数运行。以下代码适用于iOS和Android设备。
function stateGo() {
var state = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
var stateParams = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var transitionOptions = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
var stateOptions = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
if (!state) {
$log.debug('[native transition] cannot change state without a state...');
return;
}
unregisterToStateChangeStartEvent();
transition(transitionOptions);
if (ionic.Platform.isIOS()) {
$timeout(function() {
$state.go(state, stateParams, stateOptions);
});
} else {
$state.go(state, stateParams, stateOptions);
}
}
我决定添加对iOS设备的检查并仅在这种情况下运行超时,因为它只发生在iOS设备中,超时可能使Android设备在转换时闪烁一点(我可能是偏执的,这不是真的甚至发生,或者是由于我的应用程序内容上的大图像。)
相同的修复程序可能也适用于您正在使用locationurl的情况,在这种情况下,您只需将超时设置为“$ location.url(url);”功能
不确定这是否是此问题的最终解决方案,但它现在可以正常工作,并希望很快就会修复该插件,因此这个问题不会打扰其他任何人。
答案 1 :(得分:0)
使用时,同样的问题也在我身边:
$scope.$on('$ionicView.enter', function(event, viewData) {
var transitionDirection = viewData.direction !== "back" ? "left": "right";
var options = {
"direction": transitionDirection,
"duration": 600,
"androiddelay": 75
};
window.plugins.nativepagetransitions.slide(
options,
function () {},
function () {}
);
});
然而,当我将'$ ionicView.enter'事件更改为'$ ionicView.beforeEnter'时,它为我解决了这个问题。不确定这是否是一个合适的解决方案。