gpt4 book ai didi

iOS UIView过渡,不改变navigationbar

转载 作者:行者123 更新时间:2023-11-29 03:41:03 24 4
gpt4 key购买 nike

我有一个使用 IB 编辑的 UIViewController。我在顶部放置了一个 UINavigationBar 和一个 UISegmentedControl ,在它们下面放置了 3 个 UIViews 。我希望能够使用动画在 UIViews 之间切换,但我只想为 UIViews 设置动画,我希望 navigationBar 和 athe segmentedControl 不动。我展示了我现在如何做的代码。

知道我如何只能移动 3 个 View 吗?

   - (IBAction)segmentedControlValueChanged:(id)sender {

UISegmentedControl* segmentedControl = sender;

if(lastSelectedViewIndex != [segmentedControl selectedSegmentIndex]) {

CATransition *transition = [CATransition animation];
transition.duration = 0.4;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;

if(lastSelectedViewIndex < [segmentedControl selectedSegmentIndex])
transition.subtype = kCATransitionFromLeft;
else
transition.subtype = kCATransitionFromRight;

transition.removedOnCompletion = YES; // force removal of animation when completed.
{
switch ([segmentedControl selectedSegmentIndex]) {

case 0:

[self.usageScenarioView setHidden:NO];
[self.loginCredentialsView setHidden:YES];
[self.whatItCoversView setHidden:YES];

[self.pageControl setCurrentPage:0];
break;

case 1:
[self.usageScenarioView setHidden:YES];
[self.loginCredentialsView setHidden:NO];
[self.whatItCoversView setHidden:YES];

[self.pageControl setCurrentPage:1];
break;

case 2:
[self.usageScenarioView setHidden:YES];
[self.loginCredentialsView setHidden:YES];
[self.whatItCoversView setHidden:NO];

[self.pageControl setCurrentPage:2];

break;

}
}

lastSelectedViewIndex = [segmentedControl selectedSegmentIndex];
[self.view.layer addAnimation:transition forKey:nil];

}
}

最佳答案

假设您的 3 个 View 被命名为 view1、view2、view3。如果你想删除view1并显示view2或view3,只需执行现有代码,但更改

[self.view.layer addAnimation:transition forKey:nil];

进入

[view1.layer addAnimation:transition forKey:nil];

这只会使 view1 动画化,而不是整个 View 。同样你可以尝试,

[view2.layer addAnimation:transition forKey:nil];
[view3.layer addAnimation:transition forKey:nil];

更准确地说,喜欢

 transition.removedOnCompletion = YES; // force removal of animation when completed.
{
switch ([segmentedControl selectedSegmentIndex]) {

case 0:

[self.usageScenarioView setHidden:NO];
[self.loginCredentialsView setHidden:YES];
[self.whatItCoversView setHidden:YES];

[self.pageControl setCurrentPage:0];

[self.usageScenarioView.layer addAnimation:transition forKey:nil];
break;

case 1:
[self.usageScenarioView setHidden:YES];
[self.loginCredentialsView setHidden:NO];
[self.whatItCoversView setHidden:YES];

[self.pageControl setCurrentPage:1];

[self.loginCredentialsView.layer addAnimation:transition forKey:nil];
break;

case 2:
[self.usageScenarioView setHidden:YES];
[self.loginCredentialsView setHidden:YES];
[self.whatItCoversView setHidden:NO];

[self.pageControl setCurrentPage:2];

[self.whatItCoversView.layer addAnimation:transition forKey:nil];
break;

}
}

lastSelectedViewIndex = [segmentedControl selectedSegmentIndex];


}

关于iOS UIView过渡,不改变navigationbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com