ここで私のジレンマ。UIScrollView 内に 4 つの要素があります。1. 一番上の要素は、コンテンツの量に応じて動的に高さを指定する UILabel です。2. 2 番目は固定高さの UILabel で、上部の UILabel に指定された高さに応じて動的に位置を指定します 3. 3 番目の要素は UIImageView で、最上位の UILabel に指定された高さに応じて動的に位置を指定する必要があります 4.高さと位置の両方を動的に指定したUIWebViewです。(その中のコンテンツに応じて高さ..そして最上位のUILabelの高さに応じて再び位置)
最後に、UIScrollView に動的に高さを指定して、上記のすべての要素に対応します。
上記のすべてを達成するために - (void)webViewDidFinishLoad:(UIWebView *)webView で使用するコードを次に示します。
//Adjust height of top-most UILabel
CGSize maximumLabelSize = CGSizeMake(300,9999);
CGSize expectedLabelSize = [item.label1 sizeWithFont:label1.font constrainedToSize:maximumLabelSize lineBreakMode:label1.lineBreakMode];
CGRect newFrame = label1.frame;
newFrame.size.height = 0;
newFrame.size.height = expectedLabelSize.height;
label1.frame = newFrame;
//Adjust position of second UILlabel
CGRect labelPosition = label2.frame;
labelPosition.size.height = 20;
labelPosition.origin.y = expectedLabelSize.height +14;
label2.frame = labelPosition;
//Add UIImageView and adjust it's position
UIImageView *image;
image = [[UIImageView alloc] initWithFrame:CGRectMake(0, expectedLabelSize.height +41, 320, 2)];
image.image = [UIImage imageNamed:@"image.png"];
[scrollView addSubview:image];
[image release];
//Adjust UIWebView height and position
CGRect frame = webView.frame;
frame.size.height = 0;
frame.origin.y = expectedLabelSize.height +48;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
//Adjust Scrollview height
scrollView.contentSize = CGSizeMake(320, fittingSize.height +expectedLabelSize.height +48);
最後に、私の問題は、このビューを最初にロードしたときに、スクロールビュー以外のすべてが適切な高さと位置になることです。しかし、1 つのビューに戻ってこのビューを再度開くと、スクロールビューは目的の高さになります。
ここで私が間違っているかもしれないアイデアはありますか?