Вид с прокруткой для увеличения с прокруткой, без увеличения - PullRequest
0 голосов
/ 15 января 2020

Это код моего вида прокрутки во внешнем виде прокрутки. Это внутреннее представление прокрутки содержит UIImageView, который должен быть масштабируемым, но он не работает. Кроме того, изображение не полностью отцентрировано, и я не знаю почему. Можете ли вы сказать мне, что не хватает для увеличения? (внутренняя часть называется FMImageZoomController)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //CGRect frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);
    CGRect frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
    self.zoomScroller = [[UIScrollView alloc] initWithFrame:frame];

    self.zoomScroller.userInteractionEnabled = YES;
    self.zoomScroller.delegate = self;
    //self.zoomScroller.clipsToBounds = YES;

    self.imageView = [[UIImageView alloc] initWithFrame:frame];
    self.imageView.userInteractionEnabled = YES;
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    [self.zoomScroller addSubview:self.imageView];
    self.view = self.zoomScroller;

    float minimumScale = self.imageView.frame.size.width /self.zoomScroller.frame.size.width;
    self.zoomScroller.maximumZoomScale = 5.0f;  //Change as per you need
    self.zoomScroller.minimumZoomScale = minimumScale;  //Change as you need
    self.zoomScroller.zoomScale = minimumScale;
}

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

РЕДАКТИРОВАТЬ: Я нашел ошибку, но не могу ее исправить. Масштабируемое представление прокрутки вызывает делегата постраничного представления прокрутки (внешнего вида прокрутки). Но это не имеет никакого смысла, я никогда не устанавливал делегата внутреннего scrollview на внешний контроллер представления. Я только установил это здесь во внутреннем ?! Как я могу добиться, чтобы он вызывал исключительно внутренний вид прокрутки?

Это мой внешний код, для которого подготовлены все разбитые на страницы представления прокрутки:

-(void)prepareScrollView
{
    for(int i =0;i<[self.layoverPhotoAssets count];i++){
        PHAsset *asset = self.layoverPhotoAssets[i];

        FMImageZoomViewController *zoomController = [[FMImageZoomViewController alloc] init];
//        UIImageView *imageView = [[UIImageView alloc] init];
        int x = self.scrollView.frame.size.width * i;
        zoomController.view.frame = CGRectMake(x, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
        //zoomController.view.frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);
        [self.scrollView addSubview:zoomController.view];
        zoomController.zoomScroller.delegate = zoomController;

        PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
        options.resizeMode = PHImageRequestOptionsResizeModeFast;
        options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; //I only want the highest possible quality
        options.synchronous = NO;
        options.networkAccessAllowed = YES;
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:self.scrollView.frame.size contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *result, NSDictionary *info) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if(result){
                zoomController.imageView.image = result;
            }
        });
        }];

        //self.scrollView.contentSize= ;
    }
    [self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width * [self.layoverPhotoAssets count], 0)];
    [self scrollToAsset:self.selectedAsset];
}
...