【发布时间】:2026-01-08 13:40:02
【问题描述】:
长话短说,我正在尝试构建类似于 Photos.app 的功能。
我在 Storyboard 中设置了一个 UIScrollView,里面有一个 UIImageView。缩放有效,但我无法保持居中。在我所有基于框架的滚动视图实现中,我将其居中如下,效果很好:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
CGRect newImageViewFrame = self.imageView.frame;
// Center horizontally
if (newImageViewFrame.size.width < CGRectGetWidth(scrollView.bounds)) {
newImageViewFrame.origin.x = (CGRectGetWidth(scrollView.bounds) - CGRectGetWidth(self.imageView.frame)) / 2;
}
else {
newImageViewFrame.origin.x = 0;
}
// Center vertically
if (newImageViewFrame.size.height < CGRectGetHeight(scrollView.bounds)) {
newImageViewFrame.origin.y = (CGRectGetHeight(scrollView.bounds) - CGRectGetHeight(self.imageView.frame)) / 2;
}
else {
newImageViewFrame.origin.y = 0;
}
self.imageView.frame = newImageViewFrame;
}
但对于自动布局,它根本不是。
我对 UIScrollView 或 UIImageView 没有任何限制,因为我不知道它们应该是什么。我在想我应该把 UIScrollView 粘到四个角上,但是对于 UIImageView 我不完全确定,因为缩放会改变它的框架。
这是一个示例项目:http://cl.ly/21371H3q381N
如何使用自动布局进行居中缩放?
【问题讨论】:
-
检查这个答案*.com/a/14553055/1597744它会帮助你。
-
嗯,你是怎么解决这个问题的?我正在努力使用 Autolayout 实现相同的功能。
-
@BlackFlam3 改为使用框架。
标签: ios objective-c uiscrollview uiimageview autolayout