基本上,我希望我的应用程序表现得像 Photos.app 那样。当您放大图像时,没有什么特别的事情发生,只会使该部分变大。但是,如果您随后缩小并且图像周围有黑色字母框,它将正确居中,使黑色边框在垂直和水平方向上保持平衡。所以基本上它会在需要时将其居中,否则将其保留。

许多 questions and their corresponding answers 试图解决这个问题,但他们似乎都在放大图像时实现了它。如果需要,我只是希望它在缩放后正确地将图像居中。有没有可接受的方法来做到这一点?

现在我只是这样:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
    [UIView animateWithDuration:0.3 animations:^{
        [self centerViewInSuperview:self.imageBeingOverlayed];
    }];
}

但它被称为“当它不需要被调用时”(或者当用户放大某些特定的东西以便图像不需要居中时)。我应该调整该方法以某种方式检测它周围何时有黑条并且不需要居中吗?或者有更广泛接受的方式吗?

最佳答案

我听说这可以帮助你:

- (void)scrollViewDidZoom:(UIScrollView *)inscrollView
{
    UIView *subView = [inscrollView.subviews objectAtIndex:0];

    CGFloat offsetX = (inscrollView.bounds.size.width > inscrollView.contentSize.width)?
    (inscrollView.bounds.size.width - inscrollView.contentSize.width) * 0.5 : 0.0;

    CGFloat offsetY = (inscrollView.bounds.size.height > inscrollView.contentSize.height)?
    (inscrollView.bounds.size.height - inscrollView.contentSize.height) * 0.5 : 0.0;

    subView.center = CGPointMake(inscrollView.contentSize.width * 0.5 + offsetX,
                                 inscrollView.contentSize.height * 0.5 + offsetY);
}

关于ios - 当我的 UIScrollView 缩放图像时,如何使其正确居中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20510494/

10-15 15:29