我有一个带有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
最佳答案
使用CGRectZero
方法中的viewDidLoad
初始化tableView,然后在viewWillAppear:
方法中设置self.myTableView.frame
,因为在此方法中,视图的几何形状已经设置并且self.view.bounds
将是正确的。因此,通常:在viewDidLoad
中初始化视图,但在viewWillAppear:
中设置其几何形状。
关于iphone - 通过initWithFrame添加 subview 。 UINavigationBar的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10335824/