UIScrollView不缩放

问题描述 投票:1回答:3

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

(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]]; 

}

此代码使我可以正常滚动,但不存在缩放。

希望能收到某人的来信,戴夫

ios uiscrollview uiscrollviewdelegate
3个回答
2
投票

您是否尝试实现scrollViewDidEndZooming:withView:atScale:


来自Apple's UIScrollView documentation

滚动视图还可以处理内容的缩放和平移。当用户做出放大或缩小手势时,滚动视图会调整内容的偏移量和比例。当手势结束时,管理内容视图的对象应根据需要更新内容的子视图。 (请注意,手势可能会结束,而手指可能仍会向下。)在手势操作过程中,滚动视图不会向子视图发送任何跟踪调用。

UIScrollView类可以具有必须采用UIScrollViewDelegate协议的委托。 为了使缩放和平移正常工作,委托必须实现 viewForZoomingInScrollView:scrollViewDidEndZooming:withView:atScale:;此外,最大(maximumZoomScale)和最小(minimumZoomScale)缩放比例必须不同。


1
投票

要启用缩放,需要做两件事:

  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.minimumZoomScaleUIScrollView.maximumZoomScale设置滚动视图的最大和最小缩放,如下所示:

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

© www.soinside.com 2019 - 2024. All rights reserved.