iphonepaginationuiscrollviewpresentmodalviewcontrollerwwdc

In photoscroller app (iPhone WWDC-104 Photos App) uiscrollview images shift to right when called using presentModalviewController


I have seen the WWDC-104 video showing UIScrollView for photos. I have downloaded the Sample code too. In my app the Structure is as follows,

(Root Class)Class A ---> Class B -----------> PhotoViewController(Containing ScrollView)

I am calling the PhotoViewController class by using presentModalViewController method in Class B.

But with every swipe the new Image shifts to right on the view. A black vertical strip is visible on left of the image which widens with each swipe. So after 6 to 8 images the view becomes totally black.

I have not written any other code. Just copied the classes.

Why this happens when the PhotoViewController class is not the first class to be loaded? Is there any property that needs to be set for ScrollView ? Is there any mistake in this view Hierarchy?

Also How to start from a particular image (Load from 10th image)?

Any help/suggestion will be highly appreciated.

EDIT :

alt text

After First Horizontal Swipe,

alt text

After Second Horizontal Swipe,

alt text


Solution

  • Isn't your PhotoViewController pushed by a UINavigationController when you use it in your application ?

    That's the problem, the NavigationController modifies the frame of the ScrollView and the offset and extended width created by PhotoViewController is not longer there once the view appears.

    The easiest way to fix this is to set the view of PhotoViewController to a regular UIView and add the ScrollView as a subview of this UIView. Then the NavigationController will modify the frame of this view but it will not touch the subview.

    UIView * intermediateView = [[UIView alloc] initWithFrame:pagingScrollViewFrame];
    [intermediateView addSubview:pagingScrollView];
    self.view = intermediateView;
    

    Have a look at this question for more info: Photos app-like gap between pages in UIScrollView with pagingEnabled