Xcode将UIWebView调整为后退按钮后的内容

时间:2013-04-04 08:43:47

标签: ios iphone xcode ipad

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

In short, my view is like this:

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编程的新手,并且像网络开发者一样思考。为什么segue不记得UIWebView高度?为什么UITableView没有被推倒?我在这里错过了什么? (我一定错过了一些大的权利吗?)

2 个答案:

答案 0 :(得分: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

您的所有控件应该一个接一个地垂直对齐,您可以将此代码放在一个方法中,并在您感觉帧正在为任何控件进行更改时调用该方法。

希望这会有所帮助..

答案 1 :(得分:0)

要根据TableView调整Webview,请在TableView内使用frame height设置webview webViewDidFinishLoad

-(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
}