6

内部にいくつかのコンポーネントを含む 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 を使用しているときに、これが起こらないようにするための解決策を提案させてください。

よろしくお願いします。

(画像載せれなくてすみません)

4

3 に答える 3

0

ストーリーボードで行ったことと一致する scrollView の contentSize を設定する場合は、viewDidAppear でこれを行います。

    [self.scrollView setContentOffset:CGPointZero animated:NO];
于 2014-05-10T20:55:48.360 に答える
0

今日も同じ問題に遭遇しました。ご想像のとおり、これは AutoLayout の問題です。現在、適切に解決する方法がわかりません。ただし、AutoLayout を無効にすれば問題ありません。この目的のために、XIB ファイルを開き、[File Inspector] タブを選択してから、[Use AutoLayout] の前のチェックを外します。

于 2013-01-17T21:31:25.227 に答える
0

AutoLayout を使用しているため、高さの制約を調整する必要があります。

この投稿を参照してくださいUITableView の高さを動的に変更する

于 2013-04-13T03:04:33.607 に答える