2013-04-04 99 views
1

我正在構建一個應用程序,它從Web訂閱源(JSON)獲取其HTML內容。頁面的長度從一行到幾百行不等。 儘管UIWebView完全能夠滾動,但我需要UIWebView下的UITableView來顯示其他菜單項。這意味着我需要整個視圖來滾動而不僅僅是UIWebView。這也意味着UIWebView不應該滾動,它應該縮放到內容。Xcode將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壓低。其次,這個觀點有一個塞格本身(它像一個具有內部參考的維基結構),其作用就像一個魅力。但是當我回到頁面時,UIWebView再次保持其原始大小,它不會被調整大小。 segue使應用程序以某種方式忘記了UIWebView的新大小。

正如你所看到的,我正在爲此付出努力,一切似乎都如此靜止而絕對,而我需要一些「相對定位」。但是,我又是新來的iOS編程和像web開發人員一樣思考。爲什麼segue不記得UIWebView的高度?爲什麼不是UITableView被推下來?我在這裏錯過了什麼? (我必須失去了一些東西大吧?)

回答

0

要調整TableViewWebview,設置你的TableViewframe使用webviewwebViewDidFinishLoad自身內部height

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

感謝。雖然iphonics的答案基本相同,你的更清晰。 它解決了推下來的問題。 它沒有解決的問題是segue不記得UIWebView的新高度。所以當我改變視圖或者甚至滾動時它就會彈出。 我在另一個SO線程(13855810)中找到的解決方案。 我需要禁用'使用Autolayout'來停止佈局自動調整(現在聽起來很明顯)。您可以在'文件檢查器'中找到'使用Autolayout'選項,或者在設置欄中找到第一個按鈕/選項卡。 – 2013-04-04 10:12:39

+0

是的,謝謝。 – Vedchi 2013-04-04 10:18:09

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 

你所有的控制應垂直對準了一個又一個,你可以把這個代碼在方法,並調用該方法,每當你覺得框架正在改變任何控制..

希望這有助於..