UINavigationController框架问题

时间:2014-03-12 21:40:31

标签: ios uinavigationcontroller

我的视图控制器A中有UINavigationController

@property (nonatomic, strong) UINavigationController *containerNavigationController;

在视图控制器A中我有init方法

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    if (self)
    {
        _containerNavigationController = [UINavigationController new];

       _containerNavigationController.navigationBarHidden = YES;
    }

    return self;
}

在视图中加载方法我有这个代码:

[self.view addSubview:_containerNavigationController.view];

[_containerNavigationController.view setFrame:CGRectMake(247, 64, 700, 700)];

正如你可以看到nag视图的高度os 700,但是当我运行应用程序时,我可以看到大约400 pt的nag视图高度。但是,如果我为高度设置10000例,它将显示所有视图。所以我有另一个控制器,它是_containerNavigationController的根视图控制器,为什么我可以检查是否隐藏了一些根视图控制器的视图。因此,当高度为700时,我只看到根视图的一半,但当高度为10000时,我可以看到整个视图

当我按下视图控制器A中的某个按钮时,我设置了root。

vc = (UIViewController *)[sb instantiateViewControllerWithIdentifier:@"STScheduelPlayersViewController"];

[_containerNavigationController setViewControllers:@[vc] animated:YES];

这是登录视图,当设置了rect时加载了

(lldb) po _containerNavigationController.view
<UILayoutContainerView: 0x8b3afd0; frame = (247 64; 778 777); autoresize = W+H; gestureRecognizers = <NSArray: 0x8b39350>; layer = <CALayer: 0x8b3b460>>
当我点击按钮

时,

这个日志

(lldb) po _containerNavigationController.view
<UILayoutContainerView: 0x8b3afd0; frame = (247 64; 1034 521); autoresize = W+H; gestureRecognizers = <NSArray: 0x8b39350>; layer = <CALayer: 0x8b3b460>>

1 个答案:

答案 0 :(得分:2)

想知道但是autoresize mask解决了这个问题:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    if (self)
    {
        _containerNavigationController = [UINavigationController new];
        [_containerNavigationController.view setFrame:CGRectMake(247, 64, 778, 777)];
        _containerNavigationController.view.autoresizingMask = UIViewAutoresizingNone;
        _containerNavigationController.navigationBarHidden = YES;
    }

    return self;
}