1

問題は、3 つの部分を含むビューがあることです。

最初の部分は単純なヘッダーです - 常に同じ高さです! 2 番目の部分は簡単な説明行です。常に同じ高さです。

さて、問題は第三部です。これは、動的に計算されるサブビュー (それぞれにカスタム コントローラーがある) の viewContainer ですコンテンツの高さは、バックエンドからダウンロードされた一部のテキスト情報によって動的になります。そのため、テキスト全体を読むためにスクロールする必要がある場合もあれば、そうでない場合もあります。

現在、私はこのようにしています:

  • 特定のテキストの UILabel のサイズを計算します。
  • 次に、親ビューのサイズを変更して、UILabel に合わせます (小さい場合)。
  • 次に、サブビューに合わせて3-Part-ViewController-Viewの scrollView のサイズを変更します。

動的コンテンツを含む詳細 viewController:

    self.labelDescription.text = self.customData.descriptionText;
    [self.labelDescription sizeToFit];
    if(self.view.frame.size.height < (self.labelDescription.frame.size.height + self.labelDescription.frame.origin.y)) {
    CGRect newSize = CGRectMake(0,
                                0,
                                self.view.frame.size.width,
                                self.labelDescription.frame.size.height +
                                self.labelDescription.frame.origin.y);
    self.view.frame = newSize;
    }

詳細ビューを追加してサイズ変更した後のスクロール ビューのサイズ変更:

[self addChildViewController:controllerCustomData];
[self.scrollView addSubview:controllerCustomData.view];    
CGRect newRect = CGRectMake(0,
                            self.viewElementDetailContentContainer.frame.origin.y,
                            controllerCustomData.view.frame.size.width,
                            controllerCustomData.view.frame.size.height);
controllerCustomData.view.frame = newRect;
self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, newRect.origin.y + newRect.size.height);

私の質問は、これを行う簡単な方法はありますか?

4

1 に答える 1

0

必要なすべてを実行するメソッドを作成できます。メソッド(おそらくmethodS)を一度記述し、それを使用して必要な引数を渡す必要があります。

于 2012-07-23T19:16:07.860 に答える