【问题标题】:Resize UITableView programmatically inside a UIScrollView and avoid AutoLayout Constraints在 UIScrollView 内以编程方式调整 UITableView 的大小并避免自动布局约束
【发布时间】:2012-12-04 03:08:31
【问题描述】:

我有一个 UIScrollView,其中包含一些组件。其中一个控件是 UITableView,它用于显示电影的时间表列表,最多约为 7 行。

我将 UITableView 设置为不允许任何形式的移动,并以编程方式更改其大小以适应其内容,并增加 UIScrollView 的内容大小以便它可以平滑滚动。

一旦视图显示在屏幕上,调整大小就可以正常工作,但是当我滚动 UIScrollView 以查看下方时,UITableView 会恢复到之前的大小。

查看下一张图片:http://d.pr/i/rKzb

我使用Storyboard AutoLayout设计界面,UITableView有以下限制:

http://i.stack.imgur.com/GowOG.png

这是我调整控件大小的方式:

- (void) resizeViews {
    //
    // Synopsis
    //
    CGRect synopsisNewFrame = [Utilities adjustLabel:_movieSynopsis frameForText:_movieSynopsis.text];
    [_movieSynopsis setFrame:  synopsisNewFrame];


    //
    // Schedules
    //
    CGRect schedulesNewFrame = CGRectMake(self.tableView.frame.origin.x,
                                      _movieSynopsis.frame.origin.y + _movieSynopsis.frame.size.height + 4,
                                      self.tableView.frame.size.width,
                                      self.tableView.contentSize.height);

    [self.tableView setFrame: schedulesNewFrame];

    //
    // Scroll View
    //

    CGSize scrollSize = CGSizeMake(292, self.tableView.frame.origin.y + self.tableView.frame.size.height + 10);

    [_scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [_tableView setTranslatesAutoresizingMaskIntoConstraints:NO];

    [self.tableView setContentSize: scrollSize];
    [self.tableView setContentOffset:CGPointMake(0, 0)];

} 

这里是我调用 resizeView 的地方(在 ViewController 中):

- (void) viewDidAppear:(BOOL)animated {
    [self resizeViews];
}

有什么办法可以避免这种情况发生吗?

我很确定问题在于具有 UITableView 的约束。

让我在使用 AutoLayout 时提出解决方案来防止这种情况发生。

提前感谢您的帮助。

(对不起,我无法发布图片)

【问题讨论】:

    标签: ios uitableview uiscrollview resize autolayout


    【解决方案1】:

    我今天遇到了同样的问题。正如您所怀疑的,这是 AutoLayout 问题。我现在不确定如何正确解决它。但是,如果您禁用 AutoLayout,那就没问题了。为此,您可以打开 XIB 文件选择 File Inspector 选项卡,然后删除 Use AutoLayout 之前的检查

    【讨论】:

      【解决方案2】:

      由于您使用 AutoLayout,因此您需要调整高度限制。

      看到这个帖子Change UITableView height dynamically

      【讨论】:

        【解决方案3】:

        如果您想设置与您在情节提要中所做的内容相匹配的滚动视图的 contentSize,请在您的 viewDidAppear 中执行此操作。

            [self.scrollView setContentOffset:CGPointZero animated:NO];
        

        【讨论】:

          猜你喜欢
          • 2013-05-14
          • 2018-02-04
          • 1970-01-01
          • 2015-12-26
          • 2022-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-29
          相关资源
          最近更新 更多