난 당신이 애니메이션을 기본하지 탐색 모음에 대한 사용자 지정 애니메이션을 사용 생각합니다.
내 테스트 코드는 다음과 같습니다.
#import "ViewController.h"
@interface ViewController()
// Add a UISearchBar below navigation bar in Interface Builder
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
@end
@implementation ViewController{
// this is flag for navigation bar status (shown or hidden)
BOOL _isNaviBarHidden;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_isNaviBarHidden = NO;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
// trigger for show navigation bar. I don't know when you want to show. so I add a button in my test viewcontroller
- (IBAction)showNavibar:(id)sender {
if(_isNaviBarHidden == NO){
return;
}
[self setNavibarAndSearchBarHidden:NO];
}
- (IBAction)hideNavibar:(id)sender {
if(_isNaviBarHidden == YES){
return;
}
[self setNavibarAndSearchBarHidden:YES];
}
-(void)setNavibarAndSearchBarHidden:(BOOL)hidden{
CGFloat yOffset = -130;
CALayer *naviBarLayer = self.navigationController.navigationBar.layer;
CALayer *searchBarLayer = self.searchBar.layer;
[UIView animateWithDuration:0.3 animations:^{
if(hidden){
naviBarLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMakeTranslation(0, yOffset));
searchBarLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMakeTranslation(0, yOffset));
}else{
naviBarLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformIdentity);
searchBarLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformIdentity);
}
} completion:^(BOOL finished) {
_isNaviBarHidden = hidden;
}];
}
지금까지 시도한 것에 대한 코드를 제공하면 쉽게 처리 할 수 있습니다. –