gpt4 book ai didi

iphone - 将 UIImageView 放在 UIScrollView 中而不使用 contentInset?

转载 作者:行者123 更新时间:2023-12-03 18:52:30 26 4
gpt4 key购买 nike

我一直无法找到我遇到的这个问题的答案。

我在 UIScrollView 中有一个 UIImageView,我希望将其内容垂直居中。

目前,我能够做到这一点的唯一方法是根据 UIImageView 大小的高度设置 ScrollView 的 contentInset,但这不是一个完美的解决方案;它只是增加了 UIImageView 的大小,使 UIScrollView “认为”其内容更大,并将这些黑条添加到顶部。

我尝试从以下方面获得帮助:

UIScrollView with centered UIImageView, like Photos app

Center content of UIScrollView when smaller

但无法使用这些答案解决它。

最佳答案

这段代码应该可以在大多数版本的 iOS 上运行(并且已经过测试,可以在 3.1 及以上版本上运行,这是我目前可以访问的所有版本)。

它基于 Jonah 的回答中提到的 Apple WWDC 代码。

将以下内容添加到 UIScrollView 的子类中,并将tileContainerView 替换为包含图像或图 block 的 View :

- (void)layoutSubviews {
[super layoutSubviews];

// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = self.bounds.size;
CGRect frameToCenter = tileContainerView.frame;

// center horizontally
if (frameToCenter.size.width < boundsSize.width)
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
else
frameToCenter.origin.x = 0;

// center vertically
if (frameToCenter.size.height < boundsSize.height)
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
else
frameToCenter.origin.y = 0;

tileContainerView.frame = frameToCenter;
}

关于iphone - 将 UIImageView 放在 UIScrollView 中而不使用 contentInset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445496/

26 4 0