Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 让导航栏跟随segue自定义转换_Objective C_Uinavigationbar_Uistoryboardsegue - Fatal编程技术网

Objective c 让导航栏跟随segue自定义转换

Objective c 让导航栏跟随segue自定义转换,objective-c,uinavigationbar,uistoryboardsegue,Objective C,Uinavigationbar,Uistoryboardsegue,我正在尝试让一个新的控制器从左边来,这是Facebook的惯例。一切都很好,但第二个控制器显示工具栏,而另一个没有,我发现导航栏总是从顶部下降,与控制器后面的标准推送转换不同,因此产生了非常不愉快的效果。 我的问题是,第二个视图控制器在按下之前没有导航栏,此时生成临时导航栏为时已晚。 这是我在自定义segue中尝试的代码(在理解发生的情况时,转换特别慢): -(void) perform{ UIViewController* src=(UIViewController*)self.sourceV

我正在尝试让一个新的控制器从左边来,这是Facebook的惯例。一切都很好,但第二个控制器显示工具栏,而另一个没有,我发现导航栏总是从顶部下降,与控制器后面的标准推送转换不同,因此产生了非常不愉快的效果。 我的问题是,第二个视图控制器在按下之前没有导航栏,此时生成临时导航栏为时已晚。 这是我在自定义segue中尝试的代码(在理解发生的情况时,转换特别慢):

-(void) perform{
UIViewController* src=(UIViewController*)self.sourceViewController;
UIViewController* dest=(UIViewController*)self.destinationViewController;
CGRect originalSourceRect=src.view.frame;
float width=originalSourceRect.size.width;
CGRect f=CGRectMake(-width, originalSourceRect.origin.y, originalSourceRect.size.width, originalSourceRect.size.height);
CGRect destMain=CGRectMake(width, originalSourceRect.origin.y, originalSourceRect.size.width, originalSourceRect.size.height);
CGRect navigationBarFrame=src.navigationController.navigationBar.frame;
CGRect nb=CGRectMake(-width, navigationBarFrame.origin.y, navigationBarFrame.size.width, navigationBarFrame.size.height);
dest.view.frame=f;
dest.navigationController.navigationBar.frame=nb;
[[src.view superview] addSubview:dest.view];
[dest.navigationController setNavigationBarHidden:NO animated:NO];
[UIView animateWithDuration:.5 animations:^{
    dest.view.frame=originalSourceRect;
    src.view.frame=destMain;
    dest.navigationController.navigationBar.frame=navigationBarFrame;
    } completion:^(BOOL finished) {
        [dest.view removeFromSuperview];
        [src.navigationController pushViewController:dest animated:NO];
    }];
}