ScrollView 中的图像不可滚动

Posted

技术标签:

【中文标题】ScrollView 中的图像不可滚动【英文标题】:Image in ScrollView not being scrollable 【发布时间】:2017-12-04 07:50:36 【问题描述】:

我被要求在一个项目中提供快速帮助,并在短时间内使用 xcode 工作,我以前都没有使用过。

任务是让图片“可缩放”。经过一番研究,我发现在图像顶部放置一个 UIScrollView 就足够了。现在,由于图像视图已经存在并且集成在代码中,我不敢轻视,有一些限制,什么没有。 我不想用一个新的图像视图重新开始这个过程,然后再尝试将它连接到代码中。主要是因为图像视图位于表格视图内的表格单元格内。

我所做的是:

在故事板上

将图像视图放在情节提要的视图中。 将滚动视图的委托分配给表格单元格。 我不太清楚如何约束这些,所以我主要使用“添加缺失的约束”。

在 TableViewCell 的代码中

继承了 UIScrollViewDelegate 用@IBOutlet weak var scrollView 创建了一个新的var:UIScrollView! 由于我在控制器中,我无法覆盖 viewDidLoad 函数,因此我实现了该函数并将 minimum 和 maximumZoomScale 设置为一些值。 实现了一个返回 UIImageView 的 viewForZooming 函数

我想通了如何使用 ImageView 的约束和属性来调整大小和内容,但是无论我尝试做什么,我都无法让“缩放”工作。

ImageView 是否有任何属性会搞砸,我应该检查什么?

【问题讨论】:

我建议您构建一个带有 ImageView 的自定义 ScrollView。有了它,您可以使用 init/layoutSubviews 方法来配置滚动视图,以便它可以正确缩放分配的图像(无像素派对等) 由于我是新手,你的意思是按照我已经采取的步骤,还是我应该使用其他方法? 据我了解,您在问题中解释的内容只是将 scollView 放在图像视图上方。我的意思是,你做一个类,例如“ImageScrollView”是UIScrollView, UIScrollViewDelegate 的子类,它有一个UIImageView 作为变量。 AFAIK 还有一个 Apple 教程,我会查一下。 在 PhotoScroller 项目中寻找 ImageScrollView.m。它在 obj-c 中,但它显示了要做什么。 谢谢,奇迹终于让它工作了! :-) 【参考方案1】:

在阅读并试图弄清楚之后,最终使它起作用的是:

ScrollViewInterface Builder 中成为 ImageView 的父级 当提示约束错误时,我主要通过添加缺少的约束神奇地使约束适应 ScrollView 与周围的一切对齐。 右键单击 ScrollView,然后为委托,单击 + 符号并将其拖到 UITableViewCell。 我也为 Reference Outlet 做了同样的事情

UITableViewCell 的代码是这样的:

class ClothesItemTableViewCell: UITableViewCell, UIScrollViewDelegate 
  @IBOutlet weak var scrollView: UIScrollView!
  var theImage: UIImage? 
     set 
        clothinhImageView.image = newValue
     get 
       return clothingImageView.image
    
  

  func viewForZooming(in scrollView: UIScrollView) -> UIView? 
     return clothingImageView
  

可能不是很清楚,我找不到完成这项工作的确切文章。但是有很多人试图以不同的方式解决这个问题,并且不知何故这奏效了。希望它可以帮助别人!

【讨论】:

以上是关于ScrollView 中的图像不可滚动的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动

小程序scroll-view垂直滚动下设置高度问题

使用scroll-view横向滚动时,flex布局失效

UGUI 用手柄或者键盘控制选择Scroll View中的游戏对象时,滚动条跟着移动

如何让scrollView每次滚动指定的距离,求大神帮忙

android中的scrollView问题