iOS UIScrollView大小的子视图只有一次

我有一个图像作为UIScrollView的子视图。 我希望图像最初使用UIView的autoResizingMask和contentMode(UIViewContentModeAspectFit)属性适合屏幕的边界。 当滚动视图的框架被更改为为键盘腾出空间时,我不希望缩小子图像视图以适应较小的框架。 创建滚动视图时,我无法禁用autoResizeSubviews,因为必须在开始时重新调整子视图的大小。 现在我可以在键盘出现时关闭子视图重新调整大小,并在消失时重新启用它。 这似乎工作正常,但似乎hackish。 这是一种可以接受的方式吗?还是有更好的解决方案? 谢谢。


不要担心autoResizingMask,因为它是UIScrollView的子视图。

UIView上的autoResizingMask允许视图在其父视图的框架被调整大小时自动调整大小。 在这种情况下,听起来就像您的scrollView的框架被垂直调整以适应键盘的屏幕边框。 当父视图的框架缩小时,您的UIImageView也会缩小,这意味着它在您使用UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight作为UIImageView的autoResizingMask。

您应该通过边界属性手动将其框架设置为与UIScrollView的框架大小相同,而不是在您的UIImageView上使用autoResizingMask:

imageView.frame = scrollView.bounds;

然后,让我们将scrollView的contentSize设置为与imageView相同的大小。

scrollView.contentSize = imageView.frame.size;

这样,您的imageView应该是您的scrollView的完整大小,并且如果您调整scrollView框架的大小,它将不会移动。

链接地址: http://www.djcxy.com/p/82003.html

上一篇: iOS UIScrollView size child view only once

下一篇: Resizing UIView with UIScrollView subview