0

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

4

1 回答 1

1

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

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

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

imageView.frame = scrollView.bounds;

然后我们将scrollView的contentSize设置为和imageView一样大小。

scrollView.contentSize = imageView.frame.size;

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

于 2013-07-24T19:55:02.593 回答