Ios UIScrollView中的UIImageView在重新定位到中心位置之前,明显转到左上角

Ios UIScrollView中的UIImageView在重新定位到中心位置之前,明显转到左上角,ios,uiscrollview,Ios,Uiscrollview,我需要能够缩小图像,然后图像应该在屏幕的中心位置。这是我的-viewDidLoad: - (void)viewDidLoad { [super viewDidLoad]; [self.scrollView setDelegate:self]; UIImage *img = [UIImage imageNamed:@"IMG_0014.jpg"]; [_imageView setImage:img]; self.imageView.contentMod

我需要能够缩小图像,然后图像应该在屏幕的中心位置。这是我的
-viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.scrollView setDelegate:self];

    UIImage *img = [UIImage imageNamed:@"IMG_0014.jpg"];
    [_imageView setImage:img];

    self.imageView.contentMode = UIViewContentModeCenter;

    if (self.imageView.bounds.size.width < img.size.width || self.imageView.bounds.size.height < img.size.height)
    {
        self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    }

    _scrollView.maximumZoomScale = 2.0;
    _scrollView.minimumZoomScale = 0.1;
    _scrollView.clipsToBounds = YES;
}
但是它没有像预期的那样工作,图像视图将进入左上角。如果我实现
-(void)ScrollViewDiEndZooming:(UIScrollView*)scrollView withView:(UIView*)view atScale:(CGFloat)scale
,如果我禁用属性检查器中的滚动视图反弹缩放,它将按我想要的方式工作,图像视图将居中:

-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
    [self centerScrollViewContents];
}

但有一个问题。很明显,在居中之前,图像视图将位于左上角,看起来不太好。有没有办法让它在定位到中心之前停止发送到左上角?此外,有时在中心的定位不起作用,它只是停留在左上角

如果您只是尝试创建一个可缩放的图像视图(在滚动视图中),请查看此项目-当此项目中的方向发生更改时,会出现相同的问题-图像在居中之前会非常明显地向左拖动。你知道如何避免这种情况吗?只要稍微改变一下定位方法。我想没有直接的方法来解决这个问题。我建议隐藏视图,并在其居中时再次显示(如果隐藏)。除此之外,您可以使用一些动画,隐藏它,然后将层alpha设置为0,显示它,然后将其alpha设置为1以使其淡入?好的建议,谢谢。帮助我轻松解决这个问题的是使用弹簧和支柱调整大小,而不是使用约束。我还遵循本教程实现了所需的功能-。现在,我正在努力使图像在更大时适合屏幕大小,但这个问题与我所问的问题不同。你应该发布你的代码并接受你自己的答案,以便其他人将来可以找到这个问题。谢谢
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
    [self centerScrollViewContents];
}