【问题标题】:UIImageView pinch zooming in UIScrollViewUIScrollView中的UIImageView捏缩放
【发布时间】:2012-11-24 15:04:01
【问题描述】:

我对使用 UIScrollView 的捏缩放功能感到满意。但问题是滚动视图中图像的宽高比。

目前,我有这个,下图:

但我希望图像适合如下图所示的屏幕:

景观的行为相同。我怎样才能做到这一点?

下面是代码:

- (void)viewDidLoad
{
    UIImage *image = [UIImage imageWithData:appDelegate.selectedOriginalImage];
    imgView.image = image;
    CGSize imageSize = image.size;
    CGRect rect = CGRectMake(0, 0, imageSize.width, imageSize.height);
    imgView.frame = rect;
    scrollView.contentSize = CGSizeMake(imgView.frame.size.width, imgView.frame.size.height);
    scrollView.maximumZoomScale = 4.0;
    scrollView.minimumZoomScale = 1.0;
    scrollView.delegate = self;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    UIImage *image = [UIImage imageWithData:appDelegate.selectedOriginalImage];
    CGSize imageSize = image.size;
    CGRect rect = CGRectMake(0, 0, imageSize.width, imageSize.height);
    imgView.frame = rect;

    [scrollView setContentOffset:CGPointMake(0, 0)]; 

    return YES;
}

【问题讨论】:

  • 您的代码似乎将图像视图的大小设置为图像的本机大小。我认为,如果您定义了您希望图像视图的大小,并保持外观合适,您应该会得到您想要的效果。

标签: iphone objective-c uiscrollview uiimageview zooming


【解决方案1】:

您将 UIImageView 设置为图像的原始大小,而不是包含它的 UIScrollView 的大小。

- (void)viewDidLoad
{
    UIImage *image = [UIImage imageWithData:appDelegate.selectedOriginalImage];
    imgView.image = image;

    imgView.frame = scrollView.bounds;
    [imgView setContentMode:UIViewContentModeScaleAspectFit];
    scrollView.contentSize = CGSizeMake(imgView.frame.size.width, imgView.frame.size.height);
    scrollView.maximumZoomScale = 4.0;
    scrollView.minimumZoomScale = 1.0;
    scrollView.delegate = self;
}

记得在 viewToZoom 委托方法上返回 imgView

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2015-07-12
    • 2023-04-11
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多