ios - 在 ScrollView 中使用自动布局缩放图像如何居中?

标签 ios objective-c uiscrollview uiimageview

我几乎完全从 Storyboard 中使用自动布局完成了缩放,唯一的问题是我的图像在缩放后没有居中。目标是使图片缩放完全符合图片边界,没有黑色条纹。

这是我的约束条件(它基本上是带有 imageView 的标准 ScrollView): enter image description here

这是我按顺序完成的。首先,我设置了 UIScrollViewDelegate 方法:

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

然后在图像下载完成后,我更新了 UIImageViewheight 约束:

-(void)setupConstraintsToImageSize:(CGSize)imageSize {
    [self.imageHConstraint setConstant:imageSize.height];
    [self layoutIfNeeded];
}

对于图像约束就像

enter image description here

所以它是这样工作的(抱歉 3MB GIF):

enter image description here

所以它几乎是 ALMOST 工作,但奇怪的是它走到了底部,而不是居中,如何居中呢?

我发现我必须使用方法 -(void)scrollViewDidZoom:(UIScrollView *)scrollView 做某事但我真的不确定我应该在那里设置什么。

最佳答案

Eureka !我设法用 AutoLayout

完全做到了这一点

要实现这一点,需要做的是为您的中心 Y 约束创建导出,然后在缩放时修改它:

-(void)scrollViewDidZoom:(UIScrollView *)scrollView {
    CGFloat diff = self.fullScreenImageView.frame.size.height-self.fullScreenImageView.image.size.height;
    if(self.fullScreenImageView.frame.size.height >= self.frame.size.height) {return;}
    [self.centerYConstraint setConstant:-diff/2];
}

就是这样。

关于ios - 在 ScrollView 中使用自动布局缩放图像如何居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870933/

相关文章:

ios - 使用 UIScrollView 时将 UITextField 移动到键盘上方

ios - 随着 "view as"的变化,辅助 View 是否可以在故​​事板中自动调整大小?

iOS:在 UIView 中动态创建 UISegmentedControl

ios - 如何在ios中按字母顺序显示搜索结果

c# - 无法使用 MonoGame 3 在 iOS 上加载字体

objective-c - 是否可以在iOS5中确定iPhone 4s的网络类型(GSM/CDMA)

ios - 更改 dismissViewControllerAnimated 的动画

ios - UICollectionView 动态数据源项添加到 Collection View 的开头

ios - 如何自动调整 UIScrollView 的大小

ios - UIScrollView 与内容 View