Я новичок в iOS, и перед вами стоит проблема создания слайд-меню.
Я искал и нашел пример, но все для раскадровки и которые я нашел в xib
, вызывается на AppDelegate
класса.
Мне нужно создать меню выключения в xib
, которое должно быть вызвано после входа в систему.
Спасибо заранее!Как создать меню слайдов после входа в систему с помощью XIB в объекте c
ответ
Это ниже работает для меня хорошо ... попробуйте в своем коде. _parentView - это ваш пользовательский слайд-выход, а _rightView (UIButton) используется для отклонения этого пользовательского представления слайда. вы просто инициализируете эти два свойства
@property (strong,nonatomic) UIView *parentView;
@property (strong,nonatomic) UIButton *rightView;
-(void)slideView
{
if(![_parentView isDescendantOfView:app.navController.view])
{
[self showMenu];
}
else
{
[self hideMenu];
}
}
-(void)showMenu
{
int width=[[UIScreen mainScreen]bounds].size.width;
int height=[[UIScreen mainScreen]bounds].size.height;
_parentView =[[UIView alloc]initWithFrame:CGRectMake(0-(width-70), 0, width-70, self.navigationController.view.frame.size.height)];
[_parentView setBackgroundColor:[UIColor lightTextColor]];
[app.navController.view addSubview:_parentView];
_rightView=[[UIButton alloc]initWithFrame:CGRectMake(0,80, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-80)];
_rightView.alpha=0.7;
[_rightView addTarget:self action:@selector(hideMenu) forControlEvents:UIControlEventTouchUpInside];
if(_parentView.frame.origin.x <0)
{
[self performSelector:@selector(showSideMenu) withObject:nil afterDelay:0.2];
}
}
-(void)showSideMenu{
if(_parentView.frame.origin.x <0)
{
[UIView animateWithDuration:0.5 animations:^{
[UIView animateWithDuration:0.7 animations:^{
[self.view addSubview:_rightView];
_rightView.backgroundColor=[UIColor blackColor];
}];
CGRect frame = _parentView.frame;
frame.origin.x =0;
_parentView.frame = frame;
CGRect rightFrame=self.view.frame;
rightFrame.origin.x=_parentView.frame.size.width;
self.view.frame=rightFrame;
CGRect fram1=app.navController.navigationBar.frame;
fram1 .origin.x =_parentView.frame.size.width;
app.navController.navigationBar.frame =fram1 ;
} completion:^(BOOL finished) {
}];
}
}
-(void)hideMenu
{
if(_parentView.frame.origin.x == 0)
{
[UIView animateWithDuration:0.3 animations:^{
CGRect frame = _parentView.frame;
frame.origin.x=-_parentView.frame.size.width;
_parentView.frame = frame;
CGRect fram=self.view.frame;
fram .origin.x=0;
self.view.frame =fram ;
CGRect fram1=app.navController.navigationBar.frame;
fram1 .origin.x =0;
app.navController.navigationBar.frame =fram1 ;
} completion:^(BOOL finished) {
[_rightView removeFromSuperview];
[_parentView removeFromSuperview];
}];
}
}
Спасибо ... !!!
САМЫЙ ЛУЧШИЙ ПРИМЕР МАРШРУТА МАРШРУТЫ: КОНТРОЛЛЕР ВЗАИМОДЕЙСТВИЯ. ЭТОТ БИБЛИОТЕКА ЛЕГКО ИСПОЛЬЗОВАТЬ И ЕЕ ЛЕГКО ПОНИМАТЬ.
точно это лучше всего, но он находится в Раскадке и не после входа в систему. – Muju
no Sir Вы также можете реализовать боковую панель после входа в систему. Предположим, у вас есть три контроллера, но вы хотите, чтобы sw от второго, так что вы можете сделать это очень легко. Сначала нажмите от одного до второго контроллера, а затем подключите sw к второму контроллеру, чтобы вы могли получить sw во втором контроллере. –
Как это сделать. можете ли вы предоставить код этого? – Muju
PUSH ОТ НОРМАЛЬНОГО ЗРЕНИЯ УПРАВЛЕНИЯ ДЛЯ SW VIEW CONTROLLER
UIStoryboard*Storyboard=[AppDelegate storyBoardType];
SidebarViewController *sidebarmemu =(SidebarViewController*)[Storyboard instantiateViewControllerWithIdentifier:@"SidebarController"];
tbTBC*tabbarController=(tbTBC*)[Storyboard instantiateViewControllerWithIdentifier:@"tbTBCId"];
SWRevealViewController *revealController;
UINavigationController *frontNavigationController;
UINavigationController *rearNavigationController;
frontNavigationController =[[UINavigationController alloc]initWithRootViewController:tabbarController];
rearNavigationController =[[UINavigationController alloc]initWithRootViewController:sidebarmemu];
revealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];
revealController.delegate = self;
self.swcontroller =revealController;
self.view.window.rootViewController =self.swcontroller;
С помощью этого кода, который вы можете получить ОБА TAB бар, а также боковая панель
@ DishantRajpat Я не хочу этого использовать Раскадровка. – Muju
попробовать этот учебник https: //www.raywenderlich .com/32054/how-to-create-a-slide-out-navigation-like-facebook-and-path – Vinodh
Установить диспетчер меню slidesout в раскадровке как rootview и текущий loginview controllerif пользователь не зарегистрирован – Vinodh
@Vinodh Любой другой пример, который прост в реализации. – Muju