Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使UITableView使用子视图下的所有可用空间_Ios_Uitableview_Calendar - Fatal编程技术网

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

Ios 使UITableView使用子视图下的所有可用空间,ios,uitableview,calendar,Ios,Uitableview,Calendar,我正在尝试在iOS 7应用程序中创建一个与内置日历应用程序类似的日历屏幕,该应用程序显示一个日历月视图,下面有一个UITableView。然而,我想要的是UITableView自动使用日历下的所有可用空间-显示为5周的月份比显示为4周的月份需要更多空间 我将框架用作日历,它作为子视图添加到主视图中。我在故事板中创建了UITableView,所以它的位置是固定的。我不知道如何重新绘制UITableView以使用可用空间?是否可以检测日历子视图的底部,然后将UITableView推到显示屏上的该点

我正在尝试在iOS 7应用程序中创建一个与内置日历应用程序类似的日历屏幕,该应用程序显示一个日历月视图,下面有一个
UITableView
。然而,我想要的是
UITableView
自动使用日历下的所有可用空间-显示为5周的月份比显示为4周的月份需要更多空间

我将框架用作日历,它作为
子视图添加到主视图中。我在故事板中创建了
UITableView
,所以它的位置是固定的。我不知道如何重新绘制
UITableView
以使用可用空间?是否可以检测日历
子视图的底部
,然后将
UITableView
推到显示屏上的该点


这里有几个图片可以更清楚地说明我的意思:

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

在viewDidLoad中,您可以添加

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

如果视图层次结构如下所示:

-view
  -calendar
  -tableview

然后尝试在日历和tableview之间的故事板中自动布局。给你

您可以在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;
    }];
}

太棒了,非常感谢!虽然我必须用您的解决方案修复一个小错误,但解决此问题需要的是
tableViewFrame.origin.y
calendarFrame.origin.y
,而不是
.x