【问题标题】:How to render non-zoomed overlay over image in UIScrollView如何在 UIScrollView 中的图像上呈现非缩放覆盖
【发布时间】:2016-01-18 14:46:53
【问题描述】:

我的计划是在UIScrollView 中呈现自定义波形(以允许用户平移和滚动波形)。但另外我想在波形顶部呈现额外的非缩放信息(如播放位置标记、时间......)

所以我有一个静态的UIImage,它是预渲染的波形,还有一些我必须在它上面动态渲染的小位(我不希望位置标记或文本在波形上放大)。

我读到UIImageView 是渲染简单图像的最有效方法 (Most efficient way to draw part of an image in iOS),但这对我来说还不够,因为我必须在它上面渲染一些东西。或者这有可能吗?

我暂时看不到使用UIScrollView 的方法,因为它会放大里面的所有内容,对吗?但如前所述,我只需要缩放图像,而不需要缩放附加数据。

我可以使用UIScrollView 来实现吗?还是我必须实现一个自定义视图来自行处理缩放和平移?

【问题讨论】:

  • UIScrollView 上覆盖UIView 有什么问题?
  • 您的意思是在顶部的UIView 上渲染内容并在其中手动实现平移和缩放?而UIScrollView 将负责UIImage 的缩放和平移?这看起来会很紧还是在缩放和平移时会出现故障?
  • 不,我的意思是将您的UIImageView 添加到您的UIScrollView,然后将UIView 覆盖在滚动视图上。您不需要在UIView 中进行缩放或平移,正如您所说的“附加数据未缩放。”如果您需要在UIView 中平移,请使用两个UIScrollViews on彼此顶部(禁用缩放)....或亚历山大的解决方案(我不知道该功能存在)
  • 啊,好吧。而且,滚动视图不会缩放附加数据(为了避免播放标记的宽度发生变化)。但我需要缩放和平移信息才能在正确的位置渲染播放位置标记
  • 啊对...好吧,您始终可以在滚动视图和叠加层之间设置一个委托,以便在缩放或平移更改时对其进行更新。

标签: ios objective-c uiview uiscrollview


【解决方案1】:

如果我理解正确,您需要缩放一个视图(UIImageView)并防止缩放另一个视图(例如 UILabel)。所以,你错了 Scroll View 缩放里面的所有东西。 UIScrollViewDelegate 有方法

optional func viewForZoomingInScrollView(_ scrollView: UIScrollView) -> UIView?

它应该返回应该缩放的视图。希望,我帮助了你。

【讨论】:

  • 但这会阻止其他子视图的自动“平移”吗?
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 2015-11-06
  • 1970-01-01
  • 2019-09-14
  • 2016-01-27
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多