我有一个包含UIImageView的UIScrollView,当iPhone旋转时,我遇到了一些问题,无法获得正确的行为。
目标:我试图在从纵向到横向时获得以下效果:
_________
|AAAAAAA|
|BBBBBBB| _________________
|CCCCCCC| | AAAAAA |
|DDDDDDD| --> | CCCCCC |
|EEEEEEE| | EEEEEE |
|FFFFFFF| |_____GGGGGG_____|
|GGGGGGG|
---------
在iPhone旋转时,整个肖像视图中的所有内容都被缩放以适应全景视图。同时,也进行了居中处理,并且保留了原始宽高比例。用户可以通过互动操作来平移/缩放图像,使其占满整个屏幕。
目前,scrollView上的`autoresizingMask`如下:
scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
但是这会得到以下结果。
_________
|AAAAAAA|
|BBBBBBB| _________________
|CCCCCCC| |AAAAAA |
|DDDDDDD| --> [BBBBBB |
|EEEEEEE| [CCCCCC |
|FFFFFFF| [DDDDDD__________|
|GGGGGGG|
---------
这个设置会保留从左上角开始的比例和偏移量。
问题: 是否可以使用适当的autoresizingMask
来获得这种行为?如果不行,那么应该进行设置。
scrollView.autoresizingMask = UIViewAutoresizingNone;
在旋转时,需要手动设置UIScrollView的zoomScale
和contentOffset
。但是,应该在哪里进行操作?如何实现动画效果?
解决方案: 通过对下面的答案进行微小修改,使用以下代码即可实现上述行为:
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth
| UIViewAutoresizingFlexibleHeight);
imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;