views:

46

answers:

1

Hi everyone.

I'm having a really hard time trying to animate the resizing of a UIWebView, and just don't know where else to go.

Here's what I want to accomplish: I have two views, one above the other (imagine two squares, one on the top of the other). The top view is a UIWebView, and the bottom one will be referred to as a general UIView (I'm not having any problems with the bottom one). I adjust the two views every time new content is loaded just fine. I also have a button that should hide the bottom view or show it, depending on its previous state.

That's where the problem kicks in. When the bottom view is hidden, pressing the button will enlarge its frame and reduce the UIWebView frame. That's fine. But if the bottom view is being shown and the button is pressed, the UIWebView frame will become larger, and there are some issues with it:

  • If the UIWebView is scrolled all the way to the bottom, it "jumps" up a little bit before coming down (becoming larger);

  • If the UIWebView is scrolled all the way to the top, it comes down as expected, as long as there is enough content to be scrolled behind the bottom view.

In general, what I've learned is that if the content yet behind the bottom view is LARGER than the amount of resizing happening, no jumping happens. Otherwise, it does.

I've done a lot of research, asked a previous question (http://stackoverflow.com/questions/3604812/issue-when-resizing-uiwebview-using-animation) and so I'm assuming this is a consequence of lazy loading the UIWebView. This "jump" happens so that it is automatically resized (showing all the content, even if some of it is offscreen) and then moves down. Otherwise, it would be expanding and loading new content at the same time, requiring a lot more processor power.

I've experimented with frames, bounds and centers, and so far have got nowhere. Is my assumption correct? Is there no simple way to resize way to resize the UIWebView so that it goes only down (when becoming larger) and keeps the bottom scroll?

In theory, I think the right way would be to make the UIWebView larger to the top, keeping its current bottom position, and then animate bringing it down. This way, the top content would already be loaded. But I haven't had any success with it.

If anyone has any experience with this, please share. And thanks a lot.

A: 

If scrolled to the bottom of a tall enough web page, try animating the web view downwards without changing it's size, then change the web views height so that the top goes back to where it should be. You can temporarily fill the space left as the web view moves down with some sort of pattern.

hotpaw2
That wouldn't be very pretty to the users... And even so, I don't know of any way to detect if the UIWebView has been scrolled enough. I've experimented with javascript (pageoffset and total scroll height) without success, also. I need a way to get the offset at the bottom, not at the top (that's what pageoffset returns).
Aloha Silver