滚动 UIScrollView 时如何缩放
Posted
技术标签:
【中文标题】滚动 UIScrollView 时如何缩放【英文标题】:How to zoom when scroll UIScrollView 【发布时间】:2012-03-08 11:12:02 【问题描述】:我在 UIScrollView 中添加了几个标签,我希望在滚动时,中间标签的字体大小可以变大。并且之前的中间标签字体大小缩小到更小。变化是逐渐发生的。如下所示。标签 1 向左移动缩小,标签 2 向中间移动变大。 UIScroll 视图中的所有标签。
我尝试了一些,比如滚动时我尝试缩放滚动页面,看起来比我想象的要复杂......
谁有好主意?谢谢!
【问题讨论】:
【参考方案1】:真的很简单。只需将UIScrollViewDelegate
粘贴到滚动视图并执行类似的操作..
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
for (int i = 0; i < [scrollView.subviews count]; i++)
UIView *v = [scrollView.subviews objectAtIndex:i];
float position = v.center.x - scrollView.contentOffset.x;
float offset = 2.0 - (abs(scrollView.center.x - position) * 1.0) / scrollView.center.x;
v.transform = CGAffineTransformIdentity;
v.transform = CGAffineTransformScale(v.transform, offset, offset);
但是,如果您对仿射变换不满意,您仍然可以使用 offset
因子缩放矩形并将 UILabel 设置为 adjustsFontSizeToFitWidth
...,您就完成了!
只要确保有足够的空间!否则很容易失控。
假设:
-
除了这些标签之外,滚动视图中没有其他视图。
需要水平工作。
【讨论】:
【参考方案2】:这可以通过 CoreAnimation 来完成。您必须保留主标签的索引(位于中心的那个),并在滚动完成后或滚动开始时(在 UIScrollViewDelegate 中使用一些适合您的方法)并通过动画简单地缩小侧面标签。
【讨论】:
【参考方案3】:在中间的时候把字体的大小(带有动画块)放大,在中间的时候缩小。
您可以使用-(BOOL)isMiddle
向 UILabel 添加类别并将其设置为 true/false。
【讨论】:
以上是关于滚动 UIScrollView 时如何缩放的主要内容,如果未能解决你的问题,请参考以下文章