iOS:更改主视图的高度

时间:2014-02-10 15:09:13

标签: ios user-interface

您如何更改主视图的高度,使其高度不会超出选项卡式导航栏?我希望主视图位于选项卡式导航栏上方。

2 个答案:

答案 0 :(得分:1)

我相信您希望内容不会显示在导航栏后面。如果这是正确的,您可以取消选中视图控制器中的在顶部栏下

enter image description here

您可以尝试this代码

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

您可能还需要添加

self.navigationController.navigationBar.translucent = NO;

self.navigationController.navigationBar.translucent = NO;应该是您所需要的,但是根据您的设置以及您使用导航栏执行的操作,您可能需要上面的其他代码。

您可以将这些内容添加到viewDidLoadviewDidLayoutSubviews

如果这不起作用,如果您还需要支持ios 6,可以尝试this之类的内容。

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.view.frame = CGRectMake(0,
                                     self.topOfViewOffset,
                                     self.view.frame.size.width,
                                     self.view.frame.size.height);
}

答案 1 :(得分:0)

因此,如果您的内容视图宽度与ViewController一样宽,则原点为0,0(它的左上角从视图的最左上角开始)并且具有直接在它下面的导航控制器,我会在我的ViewDidLoad方法中做这样的事情:

yourcontentview.frame = CGRectMake(0, //x co-ordinate 
                                   0, //y co-ordinate
                                   self.view.frame.width, //set width as wide as the view's
                                   self.view.frame.height - yournavigationbar.frame.height); //take the height of the nav controller away from the view and see what space is left.

或者如果您的导航控制器不在视图的最底部,则更改:

self.view.frame.height - yournavigationbar.frame.heigh

self.view.frame.heigh - yournavigationbar.frame.origin.y

以上^获取视图中导航控制器的起始位置(因此如果它从500点开始下降,那么内容视图的高度将不会超过500点)

希望他们有效!

如果有很多内容,你可以随时将它贴在滚动视图中:)