调整uitableview高度

时间:2014-05-28 12:17:06

标签: ios objective-c

我正在使用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;
}

它可以工作,但是应用程序会填满与标准电话标题栏相交的整个手机屏幕。

调整视图高度的正确方法是什么?

2 个答案:

答案 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(目前它只是在我旋转设备时没有按预期工作)并将表视图定位到全屏或实现设备旋转回调和更新框架。