【发布时间】: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