通过initWithFrame添加子视图。 UINavigationBar大小

时间:2012-04-26 14:45:50

标签: iphone objective-c ios uiview

我有一个使用UINavigationBar的视图: 的的AppDelegate

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

_homeScreen = [[PrepareScreen alloc] init];
self.mainViewController = [[MyViewController alloc] initWithScreenDef:[self.homeScreen projectHomeScreen] AndBounds:self.window.bounds];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;

然后我有一个班级

MyViewController : UIView <UITableViewDataSource,UITableViewDelegate>

.h 文件中,我有:

- (void)viewDidLoad
{
[super viewDidLoad];

self.myTableView = [[UITableView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.myTableView];
}

之后我的屏幕高度错误。我想我的myTableView有一个size.height-49.0

2 个答案:

答案 0 :(得分:2)

CGRectZero方法中使用viewDidLoad初始化tableView,然后在方法viewWillAppear:中设置self.myTableView.frame,就像在此方法中一样,视图的几何图形已经设置并且{{1会是正确的。通常情况下:在self.view.bounds中初始化视图,但在viewDidLoad中设置几何图形。

答案 1 :(得分:0)

这个怎么样?

CGRect r = initWithFrame:self.view.bounds;
r.size.height -= 49.0;
self.myTableView = [[UITableView alloc] initWithFrame:r];

希望它有所帮助...