2012-07-21 139 views
0

我遇到了UIScrollView的缩放功能问题。它根本不起作用。我读过类似的帖子,其他人使用的修复程序似乎都不适合我。我的viewController引用UIScrollViewDelegate,我有一个UIScrollView的实例变量,我声明我的子视图是UIScrollView的委托对象,我的实现为(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView。这里是我的loadView函数:UIScrollView不缩放

(void)loadView 
{ 
    CGRect frame = CGRectMake(0, 0, 320, 480); 

    scrollView = [[UIScrollView alloc] initWithFrame:frame]; 
    [scrollView setScrollEnabled:YES]; 

    CGRect reallyBigRect; 
    reallyBigRect.origin = CGPointZero; 
    reallyBigRect.size.width = frame.size.width * 2.0; 
    reallyBigRect.size.height = frame.size.height * 2.0; 
    [scrollView setContentSize:reallyBigRect.size]; 

    CGPoint offset; 
    offset.x = frame.size.width * 0.5; 
    offset.y = frame.size.height * 0.5; 
    [scrollView setContentOffset:offset]; 


    [scrollView setMinimumZoomScale:1]; 
    [scrollView setMaximumZoomScale:5]; 
    [scrollView setUserInteractionEnabled:YES]; 
    self.scrollView.delegate = self; 


    self.view = scrollView; 

    views = [[HypnosisView alloc] initWithFrame:reallyBigRect]; 

    [scrollView addSubview:views]; 

    [self.view setBackgroundColor:[UIColor clearColor]]; 

} 

该代码允许我滚动得很好,但缩放不存在。

希望从别人听到, 戴夫

+0

任何原因,你不添加到滚动视图self.view? – tiguero 2012-07-21 21:52:02

+0

仅供参考不要签署您的文章:http://stackoverflow.com/faq#signatures – tiguero 2012-07-21 21:54:32

+0

哦,谢谢!我不知道我的帖子是自动签名的。那么我第一次尝试通过(addsubview)向self.view添加scrollview会导致应用程序崩溃。用self.view = scrollview它工作得很好。我假设这是因为没有视图添加scrollview到代码中的那个地方。 – davetw12 2012-07-21 23:53:23

回答

2

您是否尝试过实施scrollViewDidEndZooming:withView:atScale:


Apple's UIScrollView documentation

滚动视图还处理缩放和的内容平摇。当用户进行捏合或捏大手势时,滚动视图会调整内容的偏移和缩放比例。当手势结束时,管理内容视图的对象应该根据需要更新内容的子视图。 (请注意,手势可能会结束,而手指仍可能会停下。)手势正在进行中时,滚动视图不会向子视图发送任何跟踪呼叫。

UIScrollView类可以有必须采取UIScrollViewDelegate协议的委托。 对于缩放和平移工作,代理必须实现viewForZoomingInScrollView:scrollViewDidEndZooming:withView:atScale:;此外,最大(maximumZoomScale)和最小(minimumZoomScale)缩放比例必须不同。

+0

我有他们两个实施,佩德罗。我的min和maxim缩放比例设置在我的委托对象上,分别为1.0和4.0。 – davetw12 2012-07-22 15:11:45

+0

我在这里恢复了一个很长的主题,但佩德罗可以请你指定如何实现scrollViewDidEndZooming:withView:atScale:?例如。比方说滚动视图中只有一个UIImageView,你怎么放大它? – Mirror318 2013-04-07 09:29:30

+0

有段时间没有做iOS,我不记得确切。不过,通过iTunes免费提供了一些很好的视频讲座。它们由斯坦福大学以“开发iOS应用程序”的名义提供。我记得教授在某个时候详细讲述了这一点。抱歉,我现在无法获得更多帮助! – 2013-04-17 20:53:49

0

有两件事情需要缩放启用要做:

  1. 使用UIScrollViewDelegate协议并实施viewForZoomingInScrollView:UIScrollView -> UIView?。将滚动条代表设置为实现类。这需要缩放UIView的返回。因此,一个简单的例子是:

    
    @IBOutlet var myZoomableImageView: UIImageView?` 
    
    override func viewDidLoad() { 
        myScrollView?.delegate = self 
    } 
    
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
        return myZoomableImageView 
    } 
    
  2. 使用UIScrollView.minimumZoomScale设置的最大值和最小值缩放滚动视图和UIScrollView.maximumZoomScale像这样:

    
    myScrollView?.minimumZoomScale = 1.0 
    myScrollView?.maximumZoomScale = 3.0 
    
    `