【问题标题】:How do you zoom a UIScrollView's content to fit如何缩放 ScrollView 内容以适应
【发布时间】:2011-11-19 22:14:00
【问题描述】:

我在 iPhone 上的 UIScrollView 是 480x230,第一次显示时内容是 972x230。我需要提供功能,当用户双击 UIScrollView 时,内容会按比例缩放以适应 480x230 UIScrollView。当再次双击它时,它应该会缩小到原来的大小。

最好的方法是什么?我已经为此摸索了几个小时,并认为这会起作用......

[bodyClockScrollView zoomToRect:bodyClockScrollView.frame animated:YES];

但似乎什么也没发生。

谢谢,如果有任何帮助指出我正确的方向,我们将不胜感激。

【问题讨论】:

  • 希望你知道如何获取no of taps,如果是的话,你只需要在双击的情况下实现你需要的。

标签: iphone xcode uiscrollview zooming


【解决方案1】:

您需要确保您设置为滚动视图委托的类实现了此方法:

-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView {
return someView;

}

【讨论】:

  • 谢谢,我正在/正在实施这个方法。
【解决方案2】:

使用 CGAffineTransform 我想出了一种方法来做我想做的事......

    //bodyCleckScrollView contains a UIView name bodyClock
    //get the scale factor required to fit bodyClock inside the iPhone window and resize it...
    CGFloat scale = 480/bodyClockScrollView.contentSize.width;  
    bodyClock.transform = CGAffineTransformScale(bodyClock.transform, scale, scale);
    //move bodyClock to the bottom of bodyScrollView.
    bodyClock.transform = CGAffineTransformTranslate(bodyClock.transform, 0.0,bodyClockScrollView.frame.size.height-bodyClock.frame.size.height);
    //scoll bodyScrollView so that bodyClock is centered in the window 
    CGPoint offsetPoint = CGPointMake(bodyClock.frame.origin.x, 0.0);
    [bodyClockScrollView setContentOffset:offsetPoint animated:YES];   

这很好用,当我想将其缩小到默认大小和位置时,您只需调用...

    bodyClock.transform = CGAffineTransformIdentity;

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 2017-04-08
    • 2015-04-28
    • 2020-10-21
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多