0

独自のレイアウトを作成しようとしています。私は私ののために使用UITableViewしましたUIViewController。サーバーからの JSON 応答があります。これは詳細な公開のようなものです。UITableViewCellまた、私の出版物には画像とテキストが混在しているため、身長を計算します。独自のレイアウトを作成し、デバイスが回転しているときに再計算します。

for (UIView * sub in contentSubviews) {
    if([sub isKindOfClass:[PaddingLabel class]])
    {
        PaddingLabel *textPart = (PaddingLabel *)sub;
        reusableFrame = textPart.frame;
        reusableFrame.origin.y = partHeight;
        partHeight += textPart.frame.size.height;
        [textPart setFrame:reusableFrame];            
    } else if([sub isKindOfClass:[UIImageView class]])
    {
        UIImageView * imagePart = (UIImageView *)sub;
        reusableFrame = imagePart.frame;
        reusableFrame.origin.y = partHeight;
        reusableFrame.origin.x = screenWidth/2 - imageSize.width/2;
        reusableFrame.size.width = imageSize.width;
        reusableFrame.size.height = imageSize.height;
        [imagePart setFrame:reusableFrame];
        partHeight += imagePart.frame.size.height;
    }
}

しかし、私はいくつかの問題を抱えています。デバイスの向きが変わったときの状態のUIScrollViewオフセットは以前と同じです。変更方法がわかりません。回転前:

ここに画像の説明を入力

回転後:

ここに画像の説明を入力

目に見える要素をrectに保存したい。提案してください。

4

1 に答える 1

0

回転後に何を表示したいかによって、いくつかの選択肢があります。考えられる解決策の 1 つは、回転の前に contentOffset.y/contentSize.height を取得し、それを新しい contentSize.height に乗算して、新しい contentOffset.y を導出することです。または、回転の前後に特定の要素を表示したままにしたい場合は、element_view.frame.origin.y と contentOffset.y の差を取得してから、新しい contentOffset.y を element_view.frame.origin.y + 差に設定します。

于 2013-07-29T23:05:03.703 に答える