iphone - 保持 UIScrollView 的 subview 不调整大小?

标签 iphone ios cocoa uiscrollview

我有一个 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/

相关文章:

iphone - CGContextDrawPDFPage占用大量内存

iphone - 将后退按钮设置为自定义 UIImage

ios - 从我的应用程序打开 iMessage

objective-c - 根据 double 值对包含对象的 NSmutable 数组进行排序

iphone - 我可以为 iPad 发布针对 iPhone 的应用程序吗?

php - 发送自定义数据的 Apple 推送通知

iphone - 在标签栏前面放一个 View

ios - Swift 包 : Dependent Package can't be found. 补救措施?

objective-c - NSToolbar 在 Leopard 和 Snow Leopard 中看起来不同

objective-c - 应用程序 :openFiles: separate files by groups