我有一个图像作为UIScrollView的子视图。我希望图像最初使用UIView的autoResizingMask和contentMode(UIViewContentModeAspectFit)属性来适应屏幕的边界。当滚动视图的框架被更改为键盘腾出空间时,我不希望子图像视图缩小以适应较小的框架。我无法在创建滚动视图时禁用autoResizeSubviews,因为子视图必须在开头重新调整大小一次。现在,我可以在键盘出现时关闭子视图重新调整大小,并在消失时重新启用它。这似乎工作正常,但似乎是hackish。这是一种可接受的方式,还是有更好的解决方案?感谢。
答案 0 :(得分:1)
不要担心autoResizingMask,因为它是UIScrollView的子视图。
UIView上的autoResizingMask允许在调整其父视图的帧大小时自动调整视图大小。在这种情况下,听起来你的scrollView框架是垂直调整的,以适应屏幕框架上的键盘。当父视图的框架缩小时,UIImageView也会缩小,这意味着如果你使用的是UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight作为UIImageView的autoResizingMask。
您应该通过bounds属性手动将其框架设置为与UIScrollView框架相同的大小,而不是在UIImageView上使用autoResizingMask:
imageView.frame = scrollView.bounds;
然后让我们将scrollView的contentSize设置为与imageView相同的大小。
scrollView.contentSize = imageView.frame.size;
这样,您的imageView应该是scrollView的完整大小,如果调整scrollView框架的大小,则不会移动。