UIView层次管理,按钮切换

//加入子控制器
[self addChildViewController:XXXViewCtrl];
//将一个UIView显示在最前面只需要调用其父视图的方法: 
bringSubviewToFront()
//将一个UIView层推送到背后只需要调用其父视图的方法:
sendSubviewToBack()
//用第二层子视图 换 第一层子视图的位置 self.view是第0层
[self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:2];

切换按钮

方法1:

- (IBAction)changeAction:(id)sender {
    UIButton *button = (UIButton *)sender;
    // 点击处于当前页面的按钮,直接跳出
    if ((self.currentViewCtrl == self.remoteH5ViewCtrl && button.tag == 101)||(self.currentViewCtrl == self.aboutCs2ViewCtrl && button.tag == 102)) {
        return;
    }else{

        switch (button.tag) {
            case 101:

                [self replaceController:self.currentViewCtrl newController:self.remoteH5ViewCtrl];
                self.currentViewCtrl = _remoteH5ViewCtrl;
                break;
            case 102:
                [self replaceController:self.currentViewCtrl newController:self.aboutCs2ViewCtrl];
                self.currentViewCtrl = _aboutCs2ViewCtrl;
                break;         
            default:
                break;
        }
    }
}

// 切换各个标签内容
- (void)replaceController:(UIViewController *)oldController newController:(UIViewController *)newController
{
    /** * transitionFromViewController:toViewController:duration:options:animations:completion: * fromViewController 当前显示在父视图控制器中的子视图控制器 * toViewController 将要显示的姿势图控制器 * duration 动画时间(这个属性,old friend 了 O(∩_∩)O) * options 动画效果(渐变,从下往上等等,具体查看API) * animations 转换过程中得动画 * completion 转换完成 */

    [self addChildViewController:newController];

    [self transitionFromViewController:oldController toViewController:newController duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:nil completion:^(BOOL finished) {

        if (finished) {

            [newController didMoveToParentViewController:self];
            [oldController willMoveToParentViewController:nil];
            [oldController removeFromParentViewController];
            self.currentViewCtrl = newController;

        }else{

            self.currentViewCtrl = oldController;

        }
    }];
}

方法2:

- (IBAction)changeAction:(id)sender {
    UIButton *button = (UIButton *)sender;
    NSInteger index = button.tag - 100;

    if (index != _ViewNum) {

        if (_ViewNum == 1) {
            [_remoteH5View removeFromSuperview]; //移除登录状态的view
            _remoteH5View = nil;
        }
        if (_ViewNum == 2) {
            [_aboutCs2View removeFromSuperview]; //移除登录状态的view
            _aboutCs2View = nil;
        }

        if (index == 1) {
            _remoteH5View = [RemoteH5View viewFromNIB];

            _remoteH5View.frame = CGRectMake(0, 0, _NetworkView.frame.size.width, _NetworkView.frame.size.height);
            [_NetworkView addSubview:_remoteH5View];
            _ViewNum = 1;
        }
        else {
            _aboutCs2View = [AboutCs2View viewFromNIB];
            _aboutCs2View.frame = CGRectMake(0, 0, _NetworkView.frame.size.width, _NetworkView.frame.size.height);
            [_NetworkView addSubview:_aboutCs2View];
            _ViewNum = 2;
        }

    }
}

方法3:

    UIButton *button = (UIButton *)sender;
    NSInteger index = button.tag - 100;

    if (index == 0) {
        self.LocalSDKbtn.selected = YES;
        self.RemoteH5btn.selected = NO;
        self.AboutCs2btn.selected = NO;

        [_NetworkView bringSubviewToFront:LocalSDKViewCtrl.view];

    }else if (index == 1) {
        self.LocalSDKbtn.selected = NO;
        self.RemoteH5btn.selected = YES;
        self.AboutCs2btn.selected = NO;
        [_NetworkView bringSubviewToFront:RemoteH5ViewCtrl.view];


    }else {
        self.LocalSDKbtn.selected = NO;
        self.RemoteH5btn.selected = NO;
        self.AboutCs2btn.selected = YES;
        [_NetworkView bringSubviewToFront:AboutCs2ViewCtrl.view];

    }

转载于:https://my.oschina.net/u/3385567/blog/907501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值