如何顺利导航到不同的全景项目
Posted
技术标签:
【中文标题】如何顺利导航到不同的全景项目【英文标题】:How to smoothly navigate to a different panorama item 【发布时间】:2013-07-31 20:42:46 【问题描述】:在全景应用程序中,我添加了几种情况,用户被导航回某个全景项目。然而,这是在一个突然的动作中完成的。有没有一种方法可以让我通过某种形式的过渡更顺利地完成这个动作?或者类似的东西?
【问题讨论】:
【参考方案1】:这段代码对我有用
SlideTransition slideTransition = new SlideTransition();
slideTransition.Mode = SlideTransitionMode.SlideRightFadeIn;
ITransition transition = slideTransition.GetTransition(panorama_main);
transition.Completed += delegate
transition.Stop();
;
PanoramaItem pItem = (PanoramaItem)panorama_main.Items[3];
panorama_main.DefaultItem = pItem;
transition.Begin();
【讨论】:
有点晚了,但出于兴趣,您如何在 XAML 中定义这些SlideTransition
s?【参考方案2】:
根据 Inder Kumar Rathore 在此页面中的回答和回答,我来做这个:
#region navigation
public enum MainPanoramaItem
None = -1, Mag, Scan, Account, Lists, More, Help, MainPanoramaItemCount
public void PanoramaNavigateTo(MainPanoramaItemitem)
int count = (int)MainPanoramaItem.MainPanoramaItemCount;
int toPosition = (int)item;
int nowPosition = panorama.SelectedIndex;
bool left = false;
if(nowPosition > toPosition)
int rightDelta = count - nowPosition + toPosition;
int leftDelta = nowPosition - toPosition;
left = rightDelta > leftDelta;
else
int leftDelta = count - nowPosition + toPosition;
int rightDelta = nowPosition - toPosition;
left = rightDelta > leftDelta;
SlideTransition slideTransition = new SlideTransition();
slideTransition.Mode = left ? SlideTransitionMode.SlideLeftFadeOut : SlideTransitionMode.SlideRightFadeOut;
ITransition transition = slideTransition.GetTransition(panorama);
transition.Completed += delegate
transition.Stop();
SlideTransition slideTransitionIn = new SlideTransition();
slideTransitionIn.Mode = left ? SlideTransitionMode.SlideLeftFadeIn : SlideTransitionMode.SlideRightFadeIn;
ITransition transitionIn = slideTransitionIn.GetTransition(panorama);
transitionIn.Completed += delegate transitionIn.Stop(); ;
panorama.SetValue(Panorama.SelectedItemProperty, panorama.Items[(int)item]);
Panorama temp = panorama;
LayoutRoot.Children.Remove(panorama);
LayoutRoot.Children.Add(temp);
LayoutRoot.UpdateLayout();
transitionIn.Begin();
;
transition.Begin();
protected override void OnBackKeyPress(CancelEventArgs e)
if (panorama.DefaultItem != panorama.Items[(int)PanoramaItem.Mag])
PanoramaNavigateTo(PanoramaItem.Mag);
e.Cancel = true;
#endregion
在 MainPage.xaml.cs 它使用淡出然后淡入并将全景图的标题保留在其原始位置。 我还不确定它对实际应用程序的反应,因为我的应用程序很空。
【讨论】:
以上是关于如何顺利导航到不同的全景项目的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Xcode Swift 项目的不同导航堆栈中从一个视图控制器屏幕切换到另一个?