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

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

一旦 View 显示在屏幕上,调整大小就可以正常工作,但是当我滚动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)];

}

这里是我在reController中调用resizeView的地方:
- (void) viewDidAppear:(BOOL)animated {
    [self resizeViews];
}

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

我很确定问题出在有UITableView的约束上。

让我提出一些解决方案,以防止在使用自动版式时发生这种情况。

在此先感谢您的帮助。

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

最佳答案

我今天遇到了同样的问题。如您所怀疑,这是AutoLayout问题。我不确定现在如何正确解决它。但是,如果禁用自动版式,那就没问题了。为此,可以打开XIB文件,选择“文件检查器”选项卡,然后在使用“自动布局”之前取消选中

10-08 05:26
查看更多