gpt4 book ai didi

iphone - 缩放 UILabel 并以正确的大小重新渲染字体

转载 作者:行者123 更新时间:2023-12-03 18:23:49 33 4
gpt4 key购买 nike

我有一个多行 UILabel,我想启用缩放功能。

我将其嵌入到 UIScrollView 中,并将最小缩放设置为 0.25,最大缩放设置为 4。这效果很好,但是我的 UILabel 的字体看起来相当恶心除 1 以外的任何缩放级别。

我可以处理这个方法:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

为了将 UILabel 的字体调整为更大的字体,但 View 仍然放大,所以看起来总是很糟糕。

有什么方法可以让标签的文本在我完成缩放后重新渲染吗?

重要的是用户当前在文本中的滚动位置不会丢失。

(为了了解我想要的效果,请注意在 Mobile Safari 中,当您缩放时,文本会在瞬间缩放/抗锯齿,然后它会清除以在当前缩放比例下很好地呈现)

最佳答案

UIScrollView 的内置缩放仅对内容 View 应用变换,这会导致比例因子高于 1.0 的任何内容都变得模糊。为了获得真正清晰的渲染,您需要自己处理缩放。我在 this answer 中描述了该过程的一部分。 .

您需要手动跟踪内容 View 的比例因子,然后在 -scrollViewDidEndZooming:withView:atScale: 委托(delegate)方法中应用该比例。对于您的 UILabel,这意味着更改字体大小以反射(reflect)新的比例。

为了保持正确的滚动位置,您需要在上述委托(delegate)方法中获取 UIScrollView 的 contentOffset 并计算对应于新缩放的 UILabel 中的位置。然后,您设置 ScrollView 的 contentSize 以匹配 UILabel 的新大小,并使用 -setContentOffset:animated: 设置新计算的内容偏移量(动画设置为 NO)。

正确计算数学有点困难,但我在我的一个应用程序中缩放文本时这样做,这可以在 video demonstration of that application 中看到。 (大约在 1/3 标记处)。

关于iphone - 缩放 UILabel 并以正确的大小重新渲染字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990458/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com