图像视图在滚动视图中不可滚动并且使用纯布局不适合

image view not scrollable in scrollview and not fit properly using pure layout

我只是想使用 purelayout 将图像放入主视图中的滚动视图中。

我现在正在做的是;

Note that view with red background is scroll view. And also the image is not scrollable.

    - (void)loadView {
        self.view = [[UIView alloc] init];

        [self.scrollView addSubview:self.photoView];        
        [self.view addSubview:self.scrollView];
        [self.view setNeedsUpdateConstraints];
    }

    - (void)updateViewConstraints {

        if (!_didSetupConstraints) {
            ...
            ...
            ...
            [self.photoView autoPinEdgeToSuperviewEdge:ALEdgeTop];
            [self.photoView autoPinEdgeToSuperviewEdge:ALEdgeBottom];
            [self.photoView autoPinEdgeToSuperviewEdge:ALEdgeLeft];
            [self.photoView autoPinEdgeToSuperviewEdge:ALEdgeRight];

            self.didSetupConstraints = YES;
        }

        [super updateViewConstraints];
    }

    - (UIImageView *)photoView {
        if (!_photoView) {
            _photoView = [UIImageView newAutoLayoutView];
            _photoView.backgroundColor = [UIColor whiteColor];
        }
        return _photoView;
    }

    - (UIScrollView *)scrollView {
        if (!_scrollView) {
            _scrollView = [UIScrollView newAutoLayoutView];
            _scrollView.backgroundColor = [UIColor redColor];
            _scrollView.maximumZoomScale = 2.0;
            _scrollView.minimumZoomScale = 0.5;
        }
        return _scrollView;
    }

好的,经过我所做的两项更改,它似乎运行良好。

首先我手动设置 self.photoView 大小。

[self.photoView autoSetDimensionsToSize:CGSizeMake([HelperModel screenWidth], [HelperModel screenHeight] -[HelperModel viewHeight:self.navigationController.navigationBar] -20.0)];

HelperModel.m

@implementation HelperModel

+ (CGFloat)screenWidth {
    return [[UIScreen mainScreen] bounds].size.width;
}

+ (CGFloat)screenHeight {
    return [[UIScreen mainScreen] bounds].size.height;
}

+ (CGFloat)viewHeight:(UIView *)view {
    return CGRectGetHeight(view.frame);
}

+ (CGFloat)photoDetailHeight {
    return [HelperModel screenHeight] -20;
}

@end   

其次,

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

用于缩放功能,如果缩放后​​的图像超出滚动视图的范围,则可以正确滚动图像。