我有一个iOS应用程序,归结为以下内容:
UIScrollViewDelegate
方法的视图控制器。UIImageView
,它是viewForZoomingInScrollView
在第一个视图控制器中返回的视图。在自定义drawRect
的{{1}}方法中,我在图像上的不同位置叠加了一些文本,文本可以是各种大小和角度,由图像上的点定义的矩形约束。因此,坐标系统都与UIImageView
相关的图像相关。
有时,文本必须渲染到太小的区域,以至于无法在默认缩放级别读取文本。
然而,当我放大时,这并不会使文本更具可读性,因为文本在原始UIImageView
上以适合于给定边界的字体大小呈现。
我喜欢的是某些方法可以在正确的位置重新绘制此文本,放大时按比例放大字体大小。这可能吗,我该怎么做?
答案 0 :(得分:2)
我自己一直在制作一个可缩放的平面图,并以一种相当简单的方式处理它。
我将文字放在标签中,并将这些标签放在ImageView的顶部。 在缩放标签的同时,使用UIImageView进行缩放,从而缩放文本也是如此。
当放大太多但文字变得模糊且模糊时,您可能希望更新以下内容中的文字标签:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
对我来说这已经足够了,我希望对你来说也是如此。
答案 1 :(得分:2)
我不是试图解决这个问题,而是说你的设计有点不对劲。我会重新设计这个,以便您以所需的最高缩放渲染所有内容,然后通过指定缩放参数让滚动视图放大/缩小完成的内容。否则你会疯狂地尝试修复文本。只需将整个图像/文档绘制成您想要的大小,然后将这些内容添加到滚动视图中,以较低的缩放比例,允许用户根据需要放大/缩小。然后你就完成了。
答案 2 :(得分:2)
您可以在UILabels上编写叠加文本,并附加到UIViewController视图。 然后,您需要从UIScrollView创建自己的自定义类并覆盖
- (void)setContentOffset:(CGPoint)anOffset
这里,使用anOffset和self.zoomScale,您可以将标签放在所需的位置,并使用适当的字体大小。因此,每当您的滚动视图移动或缩放时,它们都会更改其位置。