UIScrollView 子视图的 AspectFit 效果
July 27, 2015
最近在做一个简单 Demo,类似于微信朋友圈里的照片查看器。通过左右划查看不同照片,使用 UIPageViewController 很快就实现了;单张照片的缩放,原本以为在 UIImageView 外套个 UIScrollView 就好了;但简单的事情,却往往带来出人意料的挫败。
- UIScrollView 的 contentSize 属性是这个类最基本的属性。在这个 Demo 里,自然而然想到的是将 contentSize 设置成图片的大小,然后将 contentMode 设成 AspectFit。但在 UIScrollView 里,个人感觉 contentMode 和 contentSize 是有冲突的,就不该去碰这个属性。而且 contentSize 的选择也不必拘泥于图片的实际大小,完全可以只设置成当前屏幕的大小(然后将 UIImageView 的 frame 也设置成当前屏幕大小,contentMode 设置成 ApectFit。然后,就不用往下看了…)。
- 不要在 viewDidLoad 里就去获取某个视图的 frame ,这个时间点获取到的值基本上都是错误的。
- 通过合理的计算来设置 UIScrollView 的 zoomScale 和 contentInset 属性,从而达到 AspectFit 的效果。
参考链接: