1

我在它下面有 Tapku 日历和表格视图。日历没有静态高度,它取决于其中的行数,不同月份的行数不同。就像几个月里有 5 行和一些 6 行一样。我想设置表格框架,它应该从日历结束的地方开始。我尝试了下面提到的方法但不起作用。

- (void)calendarMonthView:(TKCalendarMonthView *)monthView monthDidChange:(NSDate *)d {
NSLog(@"calendarMonthView monthDidChange:%@",d);

  [self.mTableView setFrame:CGRectMake(0, calendar.frame.origin.y + calendar.frame.size.height, 320, 308 - calendar.frame.size.height - calendar.frame.origin.y)];
  [self.mTableView reloadData];

NSLog(@"calendar height:%f", calendar.frame.size.height);
}

它正在控制台中打印日历高度:0.000000。请指导以上。

4

1 回答 1

1

如果这仍然与您相关,请从 UI>Calendar>Month 下 TapkuLibrary 中的 TKCalendarMonthTableViewController.m 文件中尝试此操作,它对我有用,我遇到了与您完全相同的问题:

- (void)calendarMonthView:(TKCalendarMonthView *)monthView monthDidChange:(NSDate *)month animated:(BOOL)animated {
    [self updateTableOffset:animated];
}

- (void) updateTableOffset:(BOOL)animated{

    if(animated){
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.4];
        [UIView setAnimationDelay:0.1];
    }


    float y = self.monthView.frame.origin.y + self.monthView.frame.size.height;
    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, y, self.tableView.frame.size.width, self.view.frame.size.height - y );
    if(animated) [UIView commitAnimations];
}

要从一开始就调整高度,在loadView上,我只是在初始化日历后选择了日期:

calendar =  [[TKCalendarMonthView alloc] initWithSundayAsFirst:NO];
[calendar selectDate:[NSDate date]];

这样框架不仅在monthDidChange之后调整..

希望它有所帮助!

于 2013-08-06T09:17:17.437 回答