1

私の問題を理解できるようにするために、ここに私のコードからの抜粋があります:

[UIView animateWithDuration:0.5 animations:^{

    taskTable.frame = CGRectMake(
        taskTable.frame.origin.x,
        taskTable.frame.origin.y,
        taskTable.frame.size.width,
        127
    );

} completion:^(BOOL finished) {

    [self.taskTable reloadData];

}];

これが基本的な状況です: taskTable は UITableView であり、UIViewController に統合されています。最初のブロックは正常に動作し、taskTable の高さは 0.5 秒後です。

私の問題は完了ブロックから始まります。taskTable がリロードされた後、taskTable は再び元の高さに等しくなります。ちなみに元の高さは絵コンテに設定されています。

誰かがその理由を教えてもらえますか? この動作を防ぐことはできますか?

ストーリーボードのスナップショットを次に示します。

ここに画像の説明を入力

4

1 に答える 1

1

質問に答えを与えるには:

問題を解決するために自動レイアウトを無効にすることもできますが、それは最善の方法ではありません。

問題の解決方法: スーパービューの上部と tableView の間に制約を定義しました。その後、次のコードを追加します (taskTableTop はその制約です)。

[self.view removeConstraint:taskTableTop]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:taskTable
                                                      attribute:NSLayoutAttributeTop
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:jobDesc
                                                      attribute:NSLayoutAttributeBottom
                                                     multiplier:0
                                                       constant:size.height + 38]];

これを行う簡単な方法があるかどうかはわかりません。

誰かがより良い答えを用意している場合は、遠慮なく教えてください (私たち) ;o)

于 2013-01-30T18:25:47.650 に答える