我正在开发一个图像查看器,很像照片应用程序。
它是一个uiscrollview,启用了分页功能,并从Internet加载了图像,因此我已经调整了
LazyTableImages sample
. 滚动视图和其中的每个图像视图都设置了所有的自动调整大小掩码标志。
当我第一次观察旋转过程中的大小变化时,它看起来不错,但当我开始尝试与滚动视图交互时,我意识到我还必须以编程方式更改ContentView的大小。我通过实现DidRotateFromInterfaceOrientation来实现:在我的视图控制器中。
[self.scrollView setContentSize:CGSizeMake(numberOfImages * portraitWidth, [scrollView bounds].size.height)];
当交互行为正常时,我发现,如果我观看第二张照片并旋转,第一张和第二张照片的部分都会显示在屏幕上。我还需要更改ContentOffset。
我尝试了两种方法来解决这个问题——两种方法都是使用ScrollDirectToVisible:Animated:uiScrollView的方法,以及直接设置ContentOffset属性。我已经尝试将这段代码放入对方向变化的“一步”和“两步”响应的实现中。例如:
-(void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
[self.scrollView setContentOffset:CGPointMake(currentlyViewedPhotoIndex * largeImageHeight,0) animated:YES];
尽管如此,在所有情况下,它看起来都像是地狱般危险。要么我清楚地看到卷轴发生了,要么它只是跳跃。UUUUUUUUUUUUUUUUUU丑陋!有没有办法做到这一点,使它的行为完全像照片应用程序?