【问题标题】:Pinch Zoom - not able to keep the image position fixed on zooming捏缩放 - 无法在缩放时保持图像位置固定
【发布时间】:2012-08-24 19:39:06
【问题描述】:

我是 iphone 开发新手。我想缩放一个图像视图,我正在使用以下代码,

- (void)viewDidLoad
{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    self.scrollViewOutlet.minimumZoomScale=0.5;

    self.scrollViewOutlet.maximumZoomScale=4.0;

    self.scrollViewOutlet.contentSize=self.imagetobeZoomed.image.size;

    self.scrollViewOutlet.clipsToBounds=YES;

    self.scrollViewOutlet.delegate=self;

}

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{


    return self.imagetobeZoomed;
}

通过使用上面的代码,我可以缩放图像,但我的问题是我的图像在缩放时会跑到左下角。那就是我无法将图像位置固定在屏幕的中心。

我希望图像位置在缩放时保持固定。有什么帮助吗?

【问题讨论】:

    标签: objective-c ios xcode zooming pinchzoom


    【解决方案1】:

    我终于找到了自己的解决方案。这里是图像缩放的完整代码示例:)这里的图像位置在放大和缩小时保持固定。

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        self.scrollViewOutlet.minimumZoomScale=0.5;
        self.scrollViewOutlet.maximumZoomScale=4.0;
        self.scrollViewOutlet.contentSize=CGSizeMake(self.imagetobeZoomed.frame.size.width,       self.imagetobeZoomed.frame.size.height);
        self.scrollViewOutlet.clipsToBounds=YES;
        self.scrollViewOutlet.delegate=self;
    }
    
    -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return self.imagetobeZoomed;
    }
    
    
    -(void)scrollViewDidZoom:(UIScrollView *)scrollView
    {   
        UIView *subView=[scrollView.subviews objectAtIndex:0];
        CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width)? 
        (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;
        CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height)? 
    (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;
         subView.center = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX, 
                                 scrollView.contentSize.height * 0.5 + offsetY);
    
    }
    

    【讨论】:

    • 我正在使用捏合手势放大/缩小图像视图。但是我希望当图像视图的比例大于屏幕大小时发生滚动过程。但是即使我将委托设置为在 nib 文件中滚动视图,UISCrollViewDelegate 方法也无法调用。
    • 上述代码非常适合缩放,当图像视图的比例大于屏幕尺寸时,也会发生滚动过程
    • 可以,请尝试再次设置滚动视图代理
    • 试了很多次也放了断点和日志来检测方法调用,但是调用不了。
    • 你能发布你的代码吗?并且正在使用手势识别器?我上面发布的代码适用于捏缩放,只使用滚动视图而不使用任何手势识别器
    【解决方案2】:

    试试NYOBetterZoom。这肯定是你的答案。 :)

    【讨论】:

    • 我会检查一次并回复您。
    • 我可以遵循其他示例吗?因为我觉得提供的示例对我来说有点复杂,因为我现在是初学者。
    • 正如我所说,我可以使用我的代码进行缩放。唯一的问题是我无法保持图像位置固定。
    • 解决方案效果很好,但我找到了更简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2020-10-10
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多