我有一个 UIScrollView
,其中包含 viewForZoomingInScrollView
返回的 View 的多个级别的 subview 。在缩放期间,我希望其中一些 subview 调整大小,而其他 subview 不调整大小。无论我尝试什么,所有 subview 都会调整大小。在我不想调整大小的 subview 的 super View 上,我设置了 autoResizesSubviews = NO,并且还尝试了 contentMode = UIViewContentModeCenter
。我还尝试将所有 View 的 autoresizingMask
设置为 UIViewAutoresizingNone
。有什么想法吗?我无法重构 subview 的层次结构。
最佳答案
UIScrollView 的缩放 View 的 subview 通过改变它们的变换来“调整大小”,而不是通过改变它们的边界等。一个简单的解决你的问题的方法是捕捉在缩放 View 上设置的变换,反转它,然后应用它到 subview ,取消 ScrollView 应用的缩放变换。
在 viewForZoomingInScrollView
返回的 View 中,覆盖 -setTransform:,遍历所有有问题的 subview 并应用反向转换:
- (void)setTransform:(CGAffineTransform)transform
{
[super setTransform:transform];
CGAffineTransform invertedTransform = CGAffineTransformInvert(transform);
for (UIView *view in subviewsNotToBeResized)
{
[view setTransform:invertedTransform];
}
}
关于iphone - 保持 UIScrollView 的 subview 不调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981201/