缩放 UIScrollView(不仅是它的内容)

Posted

技术标签:

【中文标题】缩放 UIScrollView(不仅是它的内容)【英文标题】:Scale a UIScrollView (not only its content) 【发布时间】:2013-02-13 13:07:43 【问题描述】:

我有 UIScrollview 和几个 UIViews init。

如果我缩放它并不能真正缩放我的scrollview,但它会以一种非常奇怪的方式缩放我的scrollview 中的内容,

 _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 60.0f, self.bounds.size.width, self.bounds.size.height-60.0f)];
 [self addSubview:_scrollView];
 [_scrollView.layer setAffineTransform:CGAffineTransformScale(_scrollView.layer.affineTransform, .5, .5)];

是否可以扩展scrollview 的整体而不仅仅是内容。 我想像UIScrollView 一样将它缩放为图像而不是控件。

【问题讨论】:

你想要缩放效果?? 这正是我想要实现的目标 你不能使用 UIPinchGestureRecognizer 吗? 是的,这不是问题,问题是我想放大它的整体而不仅仅是内容 【参考方案1】:

你可以试试这个:

- (CGRect)zoomRectForScale:(float)scale withScrollView:(UIScrollView *)yourScrollView 

    CGRect zoomRect;

    zoomRect.size.height = [yourScrollView frame].size.height / scale;
    zoomRect.size.width  = [yourScrollView frame].size.width / scale;


    zoomRect.origin.x = (yourScrollView.theScrollView.x - zoomRect.size.width  / 2.0);
    zoomRect.origin.y = (yourScrollView.center.y - zoomRect.size.height / 2.0);

    return zoomRect;

    

    ...

    [yourScrollView setFrame:[self zoomRectForScale:5 withScrollView:yourScrollView]];

【讨论】:

这不会在里面缩放我的内容,它需要两者兼而有之:) autoresizesSubviews = YES ? 这与标准缩放功能结合应该可以工作。【参考方案2】:

你可以在 UIScrollView 里面添加一个 UIScrollView 并使用委托方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
    return innerScroll;

并且只将 mainScroll 连接到委托 然后在 innerScroll 中添加您的子视图

【讨论】:

以上是关于缩放 UIScrollView(不仅是它的内容)的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发UI篇—UIScrollView控件实现图片缩放功能

如何使用 UIScrollView 捕捉缩放?

Inno Setup - 如何设置文件夹的完全权限,而不仅仅是它的内容

实现UIScrollView的缩放 Objective-C语言

在 UIScrollView 上禁用手动缩放

contentOffset 在 UIScrollView 缩放结束时重置