ios - 如何将imageView添加到collectionViewCell中的scrollView

标签 ios swift xcode uiscrollview

我有一个显示图像的collectionViewCell。我已向该单元格和 Storyboard约束添加了一个 ScrollView ,以将 ScrollView 固定到 super View 的顶部、底部、前导、尾随。

然后,我在 Storyboard中添加了一个 imageView 作为 ScrollView 的 subview ,并向 imageView 的 super View (即 ScrollView )添加了类似的 4 个约束。

在此阶段, Storyboard中会出现红色警告,因为 ScrollView 需要可滚动高度和宽度的约束。

可以通过将 imageView 的宽度和高度设置为等于单元格的 containerView 来消除这种情况。即scrollView的 super View 。

当我运行时,图像显示正确。然而,当我通过捏合放大时,当我平移时,imageView 的顶部和底部有一个尴尬的边距。

我认为这是因为 imageView 的高度尺寸大于图像,因此当我缩放时,图像上方和下方的区域也在scrollView 的 contentSize 中。

imageView设置为aspectFit。

不确定解决此问题的最佳方法是什么。

编辑1

这是两个屏幕截图。我将 imageView 的背景 View 设置为粉红色以演示正在发生的情况。第一个图像是缩放之前正确显示的图像。在第二张图像中,图像被缩放和平移。我想在放大时消除顶部的边框。

编辑2,

我还尝试向 imageView 添加固定的宽度和高度约束,该约束会在添加图像时更新。在这种情况下,除了 imageView 位于 ScrollView 的左上角并且不居中之外,一切正常。

enter image description here

enter image description here

最佳答案

我不太确定,但听起来你的 ScrollView 内容太模糊了。将 UIScrollView 想象成一个窗口。你可以在窗口中移动准的东西。当您向窗口移动时,物体可能会变大或变小;当您从左向右移动时,物体会平移。但为了正确显示,窗口内部的东西需要具有某种一致性,例如大小,以便窗口能够按比例缩放。

从软件设计的角度来看,您确实应该问自己。如果您将 UIImageView 设置为等于 super View (即 ScrollView )的高度和宽度,然后该 super View 的高度和宽度等于该 super View (UICollectionViewCell),那么为什么还要将 UIScrollView 放在第一位呢?

就我个人而言,我会为 ImageView 设置约束导出并以编程方式更新高度和宽度,或者设置一个设置比率的约束,然后只更新高度或宽度约束。设置约束的默认值并从那里开始工作。

让我们了解最新进展。

关于ios - 如何将imageView添加到collectionViewCell中的scrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868143/

相关文章:

ios - scrollViewDidScroll 不进入条件

iphone - 如何将控件很好地粘贴到 IB 中的 UIScrollView 中?

ios - push viewcontroller 是一个实例变量,pop 时不会调用 dealloc 方法

ios - 每页仅包含 1 个 tableview 的滑动段控件

ios - SpriteKit - 动画 SKShapeNode 形状路径

objective-c - Xcode 代码片段未显示在自动完成中

ios - 书皮翻转动画ios

ios - 使用图表。 swift 2.2

ios - 尝试在 Swift/iOS 8 中使用 Slider 调整颜色 - 出现 "Extra Argument Saturation In Call"错误

iphone - 在 Interface Builder 中定义 "generic"segue