【问题标题】:Springs/Struts, dynamic content and UIScrollView not correctly scrollingSprings/Struts、动态内容和 UIScrollView 无法正确滚动
【发布时间】:2015-06-02 22:03:03
【问题描述】:

我在将动态单元格添加到 UIScrollView 内的动态 UITableView 时遇到问题。滚动视图不会一直滚动到底部。下面您将看到最大滚动,在表格末尾隐藏了另外两个单元格。我正在使用自动布局,但不知道如何解决这个问题。

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
    [self setTableHeight];
    return [player.metas count];
}

- (void)setTableHeight
{
    long tableHeightCalculated = 44 * [player.metas count];
    metaTableView.frame = CGRectMake(metaTableView.frame.origin.x, metaTableView.frame.origin.y,
                                 metaTableView.frame.size.width,  tableHeightCalculated);
}

【问题讨论】:

  • 如果您使用的是静态表格视图,您甚至不应该实现任何数据源方法(如 numberOfRowsInSection)。
  • 它是一个动态表。

标签: ios iphone xcode uiscrollview autolayout


【解决方案1】:

确保正确设置 UIScrollView 的 contentSize。 如果您正确设置 contentSize 和 UIScrollView 的框架,您应该滚动查看所有内容

请试试这个

- (void)setTableHeight
{
    long tableHeightCalculated = 44 * [player.metas count];
    CGFloat diffHeight = tableHeightCalculated - metaTableView.frame.size.height;
    metaTableView.frame = CGRectMake(metaTableView.frame.origin.x, metaTableView.frame.origin.y,
                                     metaTableView.frame.size.width,  tableHeightCalculated);
    _uiScrollView.contentSize = CGSizeMake(_uiScrollView.contentSize.width, (_uiScrollView.contentSize.height + diffHeight));
}

【讨论】:

  • -(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; [self.uiScrollView layoutIfNeeded]; self.uiScrollView.contentSize = self.uiView.bounds.size; }
  • 你的 UITableView 在设计视图中的高度是多少?您是否将其设置为细胞数量 * cellHeight?如果不是,您应该在创建单元格时更新 contentSize。但是如果你已经完成了所有这些,那么自动布局可能就是你说的问题。
  • 在设计模式下高度为 156,但有 44 x 5 行。
  • 所以,有两种方法可以解决这个问题。 1. 如果您的表格正好显示 5 行并且您的单元格的高度正好是 44,您应该在设计视图中将表格高度设置为 220。 2. 如果您的表格显示的单元格可能少于或多于 5 行,或者单元格的高度是动态的,您必须在创建每个单元格时设置新表格的高度,并且不要忘记计算和设置滚动视图的新 contentSize。
  • 正如您在上面看到的,我确实根据单元格的数量设置了动态表格的表格大小。我计算高度为 44 * # 或行。如果我已经在 viewDidLayoutSubViews 中这样做了,那么我应该在哪里设置滚动视图的 contentSize。
猜你喜欢
  • 2019-05-20
  • 2018-05-03
  • 2011-03-13
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 2021-03-23
相关资源
最近更新 更多