UIScrollView 布局更改
Posted
技术标签:
【中文标题】UIScrollView 布局更改【英文标题】:UIScrollView layout change 【发布时间】: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 【参考方案1】:如果有人遇到此问题并碰巧找到此页面:
经过大量研究,我终于按照视频WWDC 2010 Video: Designing Apps with Scrolls Views中的说明解决了这个问题
此外,在观看完视频中的所有内容后,我必须在每个显示图像的可缩放滚动视图中设置此属性:
myZoomableScrollview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
【讨论】:
以上是关于UIScrollView 布局更改的主要内容,如果未能解决你的问题,请参考以下文章
UIScroll 视图 + UIView + UITableview 问题
如何使用 autoLayouts 动态增加 UIScrollView 的高度