1

我正在构建一个应用程序,它从 Web 提要 (JSON) 获取其 HTML 内容。页面的长度从单行到数百行不等。虽然 UIWebView 完全能够滚动,但我需要 UIWebView 下的 UITableView 来显示额外的菜单项。这意味着我需要滚动整个视图而不仅仅是 UIWebView。这也意味着 UIWebView 根本不应该滚动,它应该缩放到内容。

总之,我的看法是这样的:

UIImageView 是页眉,UIWebView 是内容,UITableView 是页脚菜单。隐藏的按钮用于创建自身的 segue。

我使用以下代码调整 UIWebView 的大小:

-(void)webViewDidFinishLoad:(UIWebView *)webView{
     WebView.frame = CGRectMake(WebView.frame.origin.x, WebView.frame.origin.y, WebView.frame.width, [WebView sizeThatFits:CGSizeZero].height);
}

这适用于 UIWebView 并且可以正确调整大小。然而,UITableView 显示在调整大小的 UIWebView 上,它根本不会被更大的 UIWebView 推倒。

其次,这个视图本身有一个 Segue(它就像一个带有内部引用的 wiki 结构),它就像一个魅力。但是当我返回一个页面时,UIWebView 再次保持其原始大小,它不会调整大小。segue 使应用程序以某种方式忘记了 UIWebView 的新大小。

正如你所看到的,我正在为此苦苦挣扎,当我需要一些“相对定位”时,一切似乎都是静态和绝对的。但话又说回来,我是 iOS 编程的新手,并且像 Web 开发人员一样思考。为什么 segue 不记得 UIWebView 的高度?为什么 UITableView 没有下推?我在这里想念什么?(我一定是错过了什么大事吧?)

4

2 回答 2

0

您可以将控件一个接一个地放置,如下所示

CGRect rect=imageView.frame;
float y=rect.origin.y;

//We need to just change the y from the next control so for the next control y would be.

y=y+rect.size.height+20.0;// 20.0 px padding

//Now use the above rect to set the frame for next control in your case its webview

rect=webView.frame;

rect.origin.y=y;

webView.frame=rect; //Re-Assign with changed y value

//Now move to next

y=y+rect.size.height+20.0;// 20.0 px padding

rect=tblView.frame;

rect.origin.y=y;

tblView.frame=rect; //Re-Assign with changed y value

您的所有控件应该一个接一个地垂直对齐,您可以将此代码放在一个方法中,并在您感觉到任何控件的框架发生变化时调用该方法..

希望这可以帮助..

于 2013-04-04T08:56:50.593 回答
0

TableView根据自己进行调整,请在内部Webview设置您的TableView frame使用,heightwebviewwebViewDidFinishLoad

-(void)webViewDidFinishLoad:(UIWebView *)webView{
     WebView.frame = CGRectMake(WebView.frame.origin.x, WebView.frame.origin.y, WebView.frame.width, [WebView sizeThatFits:CGSizeZero].height);
     TableView.frame = CGRectMake(TableView.frame.origin.x,WebView.frame.size.height + 20.0,TableView.frame.size.width,TableView.frame.size.height); // like this
}
于 2013-04-04T09:01:33.100 回答