您如何更改主视图的高度,使其高度不会超出选项卡式导航栏?我希望主视图位于选项卡式导航栏上方。
答案 0 :(得分:1)
我相信您希望内容不会显示在导航栏后面。如果这是正确的,您可以取消选中视图控制器中的在顶部栏下。
您可以尝试this代码
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
您可能还需要添加
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.translucent = NO;
应该是您所需要的,但是根据您的设置以及您使用导航栏执行的操作,您可能需要上面的其他代码。
您可以将这些内容添加到viewDidLoad
或viewDidLayoutSubviews
如果这不起作用,如果您还需要支持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点)
希望他们有效!
如果有很多内容,你可以随时将它贴在滚动视图中:)