内部にいくつかのコンポーネントを含む UIScrollView があります。これらのコントロールの 1 つは、映画のスケジュールのリストを表示するために使用される 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 を使用しているときに、これが起こらないようにするための解決策を提案させてください。
よろしくお願いします。
(画像載せれなくてすみません)