ale*_*ntd 12 iphone uiscrollview autorotate
我有一个分页UIScrollView,其中用户水平浏览图像,如Apple的Photos.app.这有效,但现在我正在尝试添加旋转支持.
我已经让视图旋转正常,并设法正确设置contentSize,bounds和subviews框架以适应不同的方向.所以在轮换之前和之后,一切都还可以.
然而,过渡本身很尴尬.第一个图像完美旋转,就好像旋转轴位于图像的死点(滚动视图框).第二个图像"摆动",因为旋转轴位于相同的位置:第一个图像的中心.我从第一张图片越远,"摇摆"越快.
我可以通过在旋转之前覆盖不透明的UIView并在之后隐藏它来掩盖它.但这是一个黑客.必须有一个优雅的方式来做到这一点......
jtb*_*des 40
坦率地说,我不知道你在做什么,因为你根本没有向我们展示过多少.
但!
我在滚动视图中创建了一个带有几个视图的示例项目,它工作正常.随意按照您的意愿分开.它的工作原理是创建5个视图,并将它们添加到滚动视图中.然后在第一次设置这些视图之后,每次应用程序旋转时,它都会调用我的方法alignSubviews将它们放在正确的页面位置,并使它们与滚动视图的大小相同,同时更新滚动视图contentSize.在旋转发生之前,它会跟踪滚动视图当前所在的页面,然后在旋转期间将其重置到该页面(因为页面大小必须更改).
截图http://cl.ly/43de79be29c5a03a1775/content
我注意到这些附加信息供以后自己参考.我从@jtvandes的解决方案中解决了这个问题.但是,就我而言,这些实现就足够了.强制布局再次打破了我的观点.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
currentPageOffset = [hostingScrollView contentOffset].x / [hostingScrollView bounds].size.width;
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
// Layout changed instantly at this time.
// So we have to force to set offset instantly by setting animation to NO.
[hostingScrollView setContentOffset:CGPointMake([hostingScrollView bounds].size.width * currentPageOffset, 0.0f) animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9796 次 |
| 最近记录: |