我正在使用uitableview创建一个简单的应用程序。我想在代码中创建所有内容。我使用了以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
FBVCalendarViewController *calendarViewController = [[FBVCalendarViewController alloc] init];
self.window.rootViewController = calendarViewController;
[self.window makeKeyAndVisible];
return YES;
}
...
- (void)loadView
{
UITableView *calendarItems = [[UITableView alloc] init];
self.view = calendarItems;
}
它可以工作,但是应用程序会填满与标准电话标题栏相交的整个手机屏幕。
调整视图高度的正确方法是什么?
答案 0 :(得分:2)
由于UITableView
继承自UIScrollView
,您应该注意IOS 7
所带来的更改。
您的问题的解决方案是:
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[self setNeedsStatusBarAppearanceUpdate];
self.automaticallyAdjustsScrollViewInsets = NO;
}
(这会将表格视图保留在状态栏下方)。
希望有所帮助。但是你应该看看IOS 7引入的变化。
答案 1 :(得分:1)
所以我用loadView中的以下代码解决了我的问题:
- (void)loadView
{
UITableView *calendarItems = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
UIView *rootView = [[UIView alloc] init];
[rootView addSubview:calendarItems];
self.view = rootView;
}
我使用空的UIView作为tableView的父级,并更改了构造函数以显式指定UITableView框架。我认为更好的方法是使用autolayout(目前它只是在我旋转设备时没有按预期工作)并将表视图定位到全屏或实现设备旋转回调和更新框架。