滚动UIScrollView时如何缩放

时间:2012-03-08 11:12:02

标签: iphone objective-c ios uiscrollview

我在UIScrollView中添加了一些标签,我想滚动时,中间标签的字体大小会变大。并且之前的中间标签字体大小缩小到更小。变化逐渐发生。如下。标签1向左移动缩小,标签2向中移动变大。 UIScroll视图中的所有标签。

enter image description here

我尝试了一些,比如当滚动我尝试缩放滚动页面时,看起来比我想象的要复杂......

任何人都有好主意?谢谢!

3 个答案:

答案 0 :(得分:4)

非常简单。只需将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 ......您就完成了!

确保有足够的空间!否则它很容易失控。

假设:

  1. 除了这些标签之外,滚动视图中没有其他视图。
  2. 需要水平工作。

答案 1 :(得分:0)

可以使用CoreAnimation完成。您必须保留主标签的索引(中间的那个),滚动完成后或滚动开始时(在UIScrollViewDelegate中使用适合您的方法)并简单地通过动画收缩侧标签。

答案 2 :(得分:0)

只要字体的大小(使用动画块)是中间的,而不是更小的字体。

您可以使用-(BOOL)isMiddle向UILabel添加类别,并将其设置为true / false。