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