【发布时间】:2013-01-08 15:00:29
【问题描述】:
我有一个带有一堆图像的 UIScrollView。到目前为止,我已经设法在布局更改时更改滚动视图及其 UIImageViews 的大小。但问题是,当布局发生变化时,图像似乎“摆动”而不是围绕其中心点旋转。这看起来很奇怪,我看到许多具有这种分页的应用程序已经在图像视图上实现了平滑的布局更改动画。我如何实现这一目标?
代码如下:
viewDidLoad
{
// Set up scrollview subviews and their content offsets based on NSArray
// Set up orientation change listener
}
orientationChangeListener
{
UIImageView *iv = [self.ivScrollView.subviews objectAtIndex: self.ivPager.currentPage];
self.ivScrollView.layer.anchorPoint = iv.layer.anchorPoint;
[self.ivScrollView setContentOffset: CGPointMake(self.ivScrollView.frame.size.width * self.current, 0.0) animated:NO
];
switch(orientation){
case portrait:
// update scrollview's subview sizes and content offsets
// code to position the image appropriately based on screen dimensions
break;
case landscapeLeft:
// update scrollview's subview sizes and content offsets
// code to position the image appropriately based on screen dimensions
break;
case landscapeRight:
// update scrollview's subview sizes and content offsets
// code to position the image appropriately based on screen dimensions
break;
}
}
我希望这能给你这个想法。 :)
【问题讨论】:
-
代码将是最有帮助的,有太多的说明。
-
我添加了一个抽象代码只是为了给你一个想法。希望能帮助到你。 :)
-
谢谢,这应该会有所帮助。您正在模拟显示其中之一的图像的分页是否正确?我猜带有图像的视图相对于滚动视图居中?如果这是正确的,我希望滚动视图及其所有子视图的锚点为 (0.5, 0.5),您是否在任何地方明确更改它们?
-
嗯,是的,只要布局发生变化。我承认我对 anchorPoint 系统的工作原理没有很好的理解,在这种情况下或任何情况下(我仍然是 iOS 新手)。也许您可以为我提供一个带有适当解释的链接? :)
-
当然,我是这样找到它的:CALayer > Core Animation Programming Guide > Layer Geometry and Transforms
标签: ios layout uiscrollview uiimageview uipagecontrol