当前界面最上面添加视图(UIWimdow)

时间:2023-03-09 15:46:29
当前界面最上面添加视图(UIWimdow)

-(void)windowAddPushVc:(UIView *)pushView WithTitle:(NSString *)title {

UIWindow *window = [UIApplication sharedApplication].keyWindow;

UINavigationBar *navigationBar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 64)];

UILabel *label = [UILabel rf_labelWithFontName:kFontPingFangMedium FontSize:36 TextAligent:NSTextAlignmentCenter TextColor:[UIColor whiteColor] CanChangeLine:NO];

label.text = title;

[navigationBar addSubview:label];

[label mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerX.mas_equalTo(navigationBar);

make.centerY.mas_equalTo(navigationBar).offset(10);

}];

navigationBar.backgroundColor = kGlobelMainColor;

//添加导航栏的阴影效果

navigationBar.layer.shadowOpacity = 0.26;

navigationBar.layer.shadowOffset = CGSizeMake(0, 3);

navigationBar.layer.shadowColor = HexColor(0x000000).CGColor;

//添加返回按钮

[self addBackBtn:navigationBar];

pushView.tag = 1099;

navigationBar.tag = 1098;

pushView.frame = CGRectMake(0, 64, kScreenWidth, kScreenHeight);

navigationBar.frame = CGRectMake(0, 0, kScreenWidth, 64);

[window addSubview:pushView];

[window addSubview:navigationBar];

}

- (void)addBackBtn:(UINavigationBar *)navigationBar

{

//设置导航栏的返回按钮

RFNavButton *backBtn = [[RFNavButton alloc]initWithFrame:CGRectMake(10, 32, kFitW(100), 20)];

[backBtn setImage:[UIImage imageNamed:@"nav_backarrow_icon"] forState:UIControlStateNormal];

backBtn.titleLabel.font = [UIFont fontWithName:kFontPingFangRegular size:kFitFontSize(28)];

[backBtn setTitle:@"返回" forState:UIControlStateNormal];

[backBtn addTarget:self action:@selector(backBtnClick:) forControlEvents:UIControlEventTouchUpInside];

[navigationBar addSubview:backBtn];

}

//导航栏返回按钮的响应事件

- (void)backBtnClick:(UIButton *)btn

{

//只要是从消息在详情界面返回时,通知总的消息列表进行数据的刷新

[[NSNotificationCenter defaultCenter]postNotificationName:kPushListReload object:nil];

UIWindow *window = [UIApplication sharedApplication].keyWindow;

UIView *pushView  =  [window viewWithTag:1099];

UIView *navgationBar  = [window viewWithTag:1098];

[UIView animateWithDuration:0.5 animations:^{

pushView.alpha = 0;

navgationBar.alpha = 0;

}

completion:^(BOOL finished) {

[pushView removeFromSuperview];

[navgationBar removeFromSuperview];

}];

}

获取带有tabbar的控制器的最外层控制器

//获取当前的控制器

-(UIViewController *)gerCurrentVc{

UIViewController *rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;

UIViewController *view = rootVc.childViewControllers[0];

RFTabBarController *tabbarView = (RFTabBarController *)view.presentedViewController;

UIViewController *rootNav = tabbarView.childViewControllers[tabbarView.selectedIndex];

UIViewController *currentVc = rootNav.childViewControllers[rootNav.childViewControllers.count-1];

return currentVc;

}