gpt4 book ai didi

objective-c - 隐藏 UINavigationBar 时的自定义动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:45 27 4
gpt4 key购买 nike

我正在制作一个应用程序,它在单击时显示/隐藏(在自定义动画中)UINavigationBar。

我创建了两个函数(一个用于显示,另一个用于隐藏)。显示 UINavigationBar 的功能完美运行:

- (void) showNavigationBar {
[UINavigationBar beginAnimations:@"NavBarFadeIn" context:nil];
self.navigationController.navigationBar.alpha = 0;
[UINavigationBar setAnimationCurve:UIViewAnimationCurveEaseIn];
[UINavigationBar setAnimationDuration:0.5];
[UINavigationBar setAnimationTransition:UIViewAnimationOptionTransitionFlipFromTop
forView:self.navigationController.navigationBar
cache:YES];
self.navigationController.navigationBar.alpha = 1;
[UINavigationBar commitAnimations];
}

但是隐藏它的功能,即使是一样的,也不起作用。 UINavigationBar 突然消失,没有动画。

- (void) hideNavigationBar {
[UINavigationBar beginAnimations:@"NavBarFadeOut" context:nil];
self.navigationController.navigationBar.alpha = 1;
[UINavigationBar setAnimationCurve:UIViewAnimationCurveEaseIn];
[UINavigationBar setAnimationDuration:0.5];
[UINavigationBar setAnimationTransition:UIViewAnimationOptionTransitionCurlUp
forView:self.navigationController.navigationBar
cache:YES];
self.navigationController.navigationBar.alpha = 0;
[self.navigationController setNavigationBarHidden:YES animated:NO];
[UINavigationBar commitAnimations];
}

召唤:

- (void)contentView:(ReaderContentView *)contentView touchesBegan:(NSSet *)touches
{
if( [[self navigationController] isNavigationBarHidden] == NO)
{
if (touches.count == 1) // Single touches only
{
UITouch *touch = [touches anyObject]; // Touch info
CGPoint point = [touch locationInView:self.view]; // Touch location
CGRect areaRect = CGRectInset(self.view.bounds, TAP_AREA_SIZE, TAP_AREA_SIZE);

if (CGRectContainsPoint(areaRect, point) == false) return;
}
[mainToolbar hideToolbar];
[mainPagebar hidePagebar]; // Hide

[self hideNavigationBar];
lastHideTime = [NSDate new];
}
}

有人知道为什么会这样吗?

最佳答案

它正在发生,因为您在动画代码中调用 [self.navigationController setNavigationBarHidden:YES animated:NO]; 但 bool 值不可设置动画。 bool 值没有“中间值”。

您应该调用 [self.navigationController setNavigationBarHidden:YES animated:NO]; 在您安排在动画之后的方法中

[UINavigationBar setAnimationDidStopSelector: @selector(myCoolMethod:)];

关于objective-c - 隐藏 UINavigationBar 时的自定义动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718539/

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