#ios #objective-c
Вопрос:
Я использую этот код в objective c для создания анимации затухания, когда пользователь прокручивает uitableview вверх или вниз. Есть ли какой-нибудь способ сделать приятную анимацию, например, медленно уменьшать панель навигации, пока пользователь медленно прокручивает ее вверх? Чем больше он прокручивает вверх, тем больше должна уменьшаться панель навигации.
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat scrollPos = self.tableView.contentOffset.y ; if(scrollPos gt;= _currentOffset ){ //hide navbar and fadeout [UIView animateWithDuration:0.50 animations:^{ [self.navigationController setNavigationBarHidden:YES animated:YES]; self.navigationController.navigationBar.alpha = 0.0f; }]; } else { //Slide it up incrementally and fadein, etc. [UIView animateWithDuration:0.50 animations:^{ [self.navigationController setNavigationBarHidden:NO animated:YES]; self.navigationController.navigationBar.alpha = 1.0f; }]; } } -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ scrollView = self.tableView; _currentOffset = self.tableView.contentOffset.y; }
Ответ №1:
Вы не можете настроить размер UINavigationBar
самостоятельно. Вы можете только скрыть/отобразить его. Apple не позволяет вам этого делать.
Вы можете использовать UIView
вместо этого! Просто спрячьте свой UINavigationBar
и поставьте такую же рамку UIView
. Поскольку UIView
он легко настраивается, вы можете делать все, что захотите.
Комментарии:
1. Таким образом, я не могу уменьшить панель навигации, но могу ли я медленно переместить ее с экрана, а затем вернуть на место при прокрутке вниз?
2. @stefanosn Нет, вы не можете изменить
UINavigationBar
анимацию по умолчанию.3. что, если я просто изменю tableviewframe.origin. y на минус 1 он должен отображаться при просмотре? без использования анимации…