iOS 7中ScrollView自动布局下缩放不起作用,但在iOS8/9中可以。

7
我已经使用UIScrollView做了一个放大图片的演示。我的ViewController只包含一张图片。 问题是在iO7上无法缩放图片(我已经在iPhone4S-iOS7上测试过),但在iOS8/iOS9上完美运行。
有什么想法可以解决这个问题吗?
这是我的代码:
#import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollview;
@property (weak, nonatomic) IBOutlet UIView *contentview;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
        float minimumScale = [_contentview frame].size.width /[_scrollview frame].size.width;
        _scrollview.maximumZoomScale = 5;  //Change as per you need
        _scrollview.minimumZoomScale = minimumScale;  //Change as you need
        _scrollview.zoomScale = minimumScale;
        _scrollview.delegate =self;
        _scrollview.clipsToBounds = YES;
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return self.contentview;
}

@end

这是布局结构。

enter image description here

Screen.png 约束条件 在此输入图像描述 ContentView 约束条件
在此输入图像描述
ScrollView 约束条件 在此输入图像描述

这是我的演示项目

https://drive.google.com/file/d/0B679aXO0SBmMeUVHTUdOcmxJSXM/view


尝试在viewForZoomingInScrollView中返回图像。 - Jageen
我尝试返回图像,但它仍然无法工作。 - Linh
现在很有趣,你能分享这个演示项目吗,这样我就不用再创建一个新的了。 - Jageen
让我们在聊天中继续这个讨论 - Jageen
@Jageen,你的解决方案(写2行代码)让我的图片在iOS7上可以缩放,但在缩放前图片看起来很糟糕,而且缩放效果不太好看。你有什么建议吗? - Linh
显示剩余2条评论
2个回答

1

高度和宽度的约束在iOS 7中引起了这个问题。一个解决方法是,在iOS 7中删除这些约束并手动计算最小比例尺minimumScale。在iOS 8及以上版本中,不需要做任何改变。

enter image description here

- (void)viewDidLoad {
    [super viewDidLoad];

    float minimumScale = 1;

    if (floor(NSFoundationVersionNumber) < NSFoundationVersionNumber_iOS_8_0) {
        [self.view removeConstraints:self.heightWidthConstraints];
        minimumScale = self.scrollview.frame.size.width / self.imageView.image.size.width;
    }

    _scrollview.maximumZoomScale = 5;  //Change as per you need
    _scrollview.minimumZoomScale = minimumScale;  //Change as you need
    //_scrollview.zoomScale = minimumScale;
    _scrollview.delegate = self;
    //_scrollview.clipsToBounds = YES;

    [self.scrollview setZoomScale:minimumScale animated:YES];
}

0

在此输入图像描述
移除contentView的宽度和高度限制。 将contentViewscrollView添加中心水平约束。

如果有效,请告诉我。


对不起回复晚了。我尝试了你的建议,但仍然没有解决问题。你能把你的代码分享给我吗? - Linh
请检查答案中更新的图像。如果您已经收到,请告诉我。 - Yagnesh Dobariya
图片可以缩放,但只能在一个方向(垂直方向)进行缩放,不能水平缩放。 - Linh
我希望我的图像可以正常地缩放(在水平和垂直方向上均可)。但是,通过你的更改,我的图像只能垂直缩放(图像的高度可以更改,但宽度不会更改)。 - Linh
让我们在聊天中继续这个讨论 - Linh
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接