UIImage Is Not Fitting In UIScrollView At Start

后端 未结 5 953
-上瘾入骨i
-上瘾入骨i 2020-12-30 12:07

I have an image like:

\"Want

When I load the image to uiimageview and then adding as a subvie

5条回答
  •  灰色年华
    2020-12-30 12:34

    I used Deepak's solution and Apples recommendations and subclassed UIScrollView with UIImageView inside it. However, I zoom the image only on first layout of my scrollview subclass and only if frame size is smaller than image size:

    - (void)layoutSubviews
    {
    [super layoutSubviews];
    
    // center the image as it becomes smaller than the size of the screen
    CGSize boundsSize = self.bounds.size;
    CGRect frameToCenter = _imageView.frame;
    
    // center horizontally
    if (frameToCenter.size.width < boundsSize.width)
        frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
    else
        frameToCenter.origin.x = 0;
    
    // center vertically
    if (frameToCenter.size.height < boundsSize.height)
        frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
    else
        frameToCenter.origin.y = 0;
    
    _imageView.frame = frameToCenter;
    
    // If image is bigger than frame, we zoom it on first load (zoom value is smaller than 1.0)
    if (_firstLayout) {
        _firstLayout = NO;
        self.zoomScale = (self.frame.size.width < _imageView.image.size.width) ? (self.frame.size.width / _imageView.image.size.width) : 1.0;
    }
    }
    

    This is how I init my subclass:

    - (id)initWithFrame:(CGRect)frame image:(UIImage*)image
    {
    self = [super initWithFrame:frame];
    if (self) {
    
        _firstLayout = YES;
    
        _imageView = [[UIImageView alloc] initWithImage:image];
        [self addSubview:_imageView];
    
        self.backgroundColor = [UIColor blackColor];
        self.minimumZoomScale = 0.1;
        self.maximumZoomScale = 10;
    
    
        self.delegate = self;
    }
    return self;
    }
    

提交回复
热议问题