使UITableView使用子视图下方的所有可用空间

时间:2014-03-14 10:46:37

标签: ios uitableview calendar

我正在尝试在iOS 7应用程序中创建一个与内置日历应用程序类似的日历屏幕,该应用程序显示日历月视图,其下方有UITableView。但是,我所追求的是UITableView自动耗尽日历下方的所有可用空间 - 一个月显示5周需要的空间比一个月需要4周。

我使用Vurig Calendar框架作为日历,将其作为subView添加到主视图中。我在StoryBoard中创建了UITableView,所以它的位置是固定的。我不确定如何重新绘制UITableView以使其使用可用空间?是否可以检测日历的底部subView,然后将UITableView推到显示屏上的那一点?

以下是一些图片,以显示我的意思更清晰:the screen showing the largest gap. the screen showing the smallest gap

3 个答案:

答案 0 :(得分:1)

在您的代码中,我相信您有一些属性,例如calendarView和tableView

在viewDidLoad中,您可以添加

CGRect calendarFrame = calendarView.frame;
CGRect tableViewFrame = tableView.frame;
tableViewFrame.origin.y = calendarFrame.origin.y+calendarFrame.size.height;
tableView.frame = tableViewFrame;

答案 1 :(得分:1)

您可以在VRGCalendarViewDelegate方法

中进行以下更改
-(void)calendarView:(VRGCalendarView *)calendarView switchedToMonth:(int)month targetHeight:(float)targetHeight animated:(BOOL)animated
{
    NSTimeInterval animationDuration = animated ? 0.3 :0.0;

    [UIView animateWithDuration:animationDuration animations:^{
        CGRect frame = self.tableView.frame;
        frame.origin.y = CGRectGetMinX(calendarView.frame) + targetHeight;
        frame.size.height = self.view.frame.size.height - frame.origin.y;
        self.tableView.frame = frame;
    }];
}

答案 2 :(得分:0)

如果您的视图层次结构如下:

-view
  -calendar
  -tableview

然后在日历和tableview之间尝试在storyboad中自动布局。这是tutorial