我正在开发一个图像查看器,就像照片应用程序一样。
它是一个 UIScrollView,它启用了从 Internet 加载的图像的分页功能,因此我调整了LazyTableImages 示例的部分内容。Scroll View 和其中的每个 ImageView 都设置了它们的所有 autoresize 掩码标志。
当我第一次观察旋转期间如何调整大小时,它看起来不错,但是一旦我开始尝试与滚动视图交互,我意识到我还必须以编程方式更改 contentView 的大小。我通过在我的视图控制器中实现 didRotateFromInterfaceOrientation: 来做到这一点。
[self.scrollView setContentSize:CGSizeMake(numberOfImages * portraitWidth, [scrollView bounds].size.height)];
当交互行为正常时,我发现,如果我正在查看第二张照片并旋转,第一张和第二张照片的一部分都会显示在屏幕上。我还需要更改 contentOffset。
我尝试通过使用 UIScrollView 的 scrollRectToVisible:animated: 方法以及尝试直接设置 contentOffset 属性来解决这两种方法。我已经通过将此代码放在对方向变化的“一步”和“两步”响应的实现中进行了实验。例如:
-(void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
[self.scrollView setContentOffset:CGPointMake(currentlyViewedPhotoIndex * largeImageHeight,0) animated:YES];
但在所有情况下,它看起来都像地狱一样笨拙。要么我清楚地看到滚动发生,要么它只是跳跃。呜呜呜呜呜呜呜!有没有办法做到这一点,使其行为与照片应用程序完全一样?