ios - 当我的 UIScrollView 缩放图像时,我该怎么做才能使框架正确居中?

标签 ios objective-c uiscrollview uiimageview

基本上,我希望我的应用程序表现得像 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/

相关文章:

ios - 查询从 Parse DB 中检索当前登录用户的 BOOL,这将确定要转到的 segue

iOS:自定义 UISlider 中的图像大小

ios - 使 UIContainerView 与设备屏幕一样宽

objective-c - 排序时忽略标点符号(Objective-C)

objective-c - 如何将Scrollview滚动到边界之外

ios - 如何将 CISampler 传递给基于 Metal 的 CIColorKernel?

ios - 不断改变 Sprite 套件中 Sprite 的颜色

ios - 为什么UIViewController中有一个navigationItem?

iphone - (iphone)以编程方式 ScrollView 后强制调用scrollViewDidEndDecelerating?

ios - 动态设置Scrollview的Contentsize不起作用