如何使在Swift中使用UIScrollView进行滚动和缩放

如题所述

  UIScrollView是IOS中非常有用的一个组件。它是通用组件UITableView的基类也是放置尺寸大于一个屏幕的内容时很好的组织方式。本教程会介绍UIScrollView的下列用法:
  如何使用UIScrollView浏览大尺寸图片。
  如何在缩放时保持UIScrollView中的内容居中.
  如何在UIScrollView中嵌入复杂的显示层次关系。
  如何使用UIScrollView的分页(paging)特性, 联合使用UIPageControl在不同页面之间移动。
  通过“偷窥”UIScrollView得到前一页,后一页还有当前页的缩略图。
  其他内容!
  本文假设你熟悉Swift语言和IOS开发。如果你完全是一名初学者, 你可能需要先学习一下本站的其他课程。
  本文还假设你知道如何使用Interface Builder在view中添加对象和在你的代码和Storyboard连接outlets。 如果你刚刚接触Storyboards和Interface Builder, 你可以在开始本教程之前线学习一下本站的Storyboards教程。
  开始
  打开Xcode创建工程。选择File\New\Project…, 接下来选择iOS\Application\Single View Application模版。 在product name输入框中输入ScrollViews, language选择Swift, devices选择 iPhone.

  单击Next选择工程文件的保存位置。
  之后下载工程的资源压缩包, 然后将解加压后的文件拖拽到工程的根目录。并确保选中了“Copy items if needed”复选框。

  本文会介绍Scroll view 的四种不同使用方式, 工程采用一个tableview来提供这四个选项。每个选项打开一个新的视图控制器(view controller)来展示scroll views的一种用法。
  下图展示了完成时storyboard的状态:

  通过下列步骤创建一个tableview:
  打开Main.storyboard删除当前场景。 选择view controller (单击 storyboard) 然后删除它。
  关闭Auto Layout功能。在Utilities面板中选择File Inspector, 取消Use Auto Layout复选框的选中状态。这会弹出一个警告窗口。在弹出窗口中确保“Keep size class data for:”选中了iPhone。然后选择Disable Size Classes。

  接下来, 添加一个Table View Controller,从Object Library中拖拽一个Table View Controller到storyboard。
  选中刚添加的table, 然后在菜单中选择Editor\Embed In\Navigation Controller。
  同时选中table view和table view controller, 将Attributes Inspector中的content type修改为Static Cells。

  在文档概要视图中Table View单击下面的按钮显示storyboard层次关系视图,然后选中Table View Section. 将行数设置为4。

  依次编辑table view的每一行, 将style设置为Basic,编辑显示的标签:
  Image Scroll
  Custom View Scroll
  Paged
  Paged with Peeking
  注释: 由于你将每一行的style设置成了“Basic”, 表单的每一行会出现额外的标签子组件。你要再次展开每行的子项目来进行编辑。
  保存storyboard, 之后构建并运行。你会看到你编辑的table view如下图所示.不过现在table view中还没有任何东西 – 但你可以改好它!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-13
在你的ViewController的superclass里添加UIScrollViewDelegate
然后比如你的UIScrollView的名字是myScrollView的话
添加
myScrollView.delegate = self
然后
myScrollView.minimumZoomScale设置最小缩放值
myScrollView.maximumZoomScale设置最大缩放值
myScrollView.bounces设置到边缘后是否有反弹效果
最后使用
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return scrollView.subviews[0]
}
实现代理。如果你的UIScrollView只有一个图片,那就是0,有多个就看你的具体情况。