0

我有 UIImageView init 的滚动视图。我在 UIImageView 上添加了一个按钮。当我缩放图像时,我的按钮也执行缩放。我怎样才能只缩放图像而不是按钮。提前感谢您的时间。

在此处输入图像描述

4

2 回答 2

2

将按钮和您不希望受UIScrollView缩放影响的任何其他视图放置在与 相同级别的视图中UIScrollView。这是一个为此目的而设置的示例视图层次结构。

在此处输入图像描述

滚动视图和其中的任何内容都会缩放(在本例中为图像视图)。在滚动视图下方的 UIView 中(在这种情况下,具有 Default.png 图像的图像视图)在滚动视图缩放时不会缩放。

编辑:

要让按钮相对于图像保持在同一位置,请将其作为子视图添加到滚动视图,添加UIScrollViewDelegate到视图控制器标题。在您的视图控制器实现中:捕获初始UIButton框架viewWillAppear,并使用滚动视图委托scrollViewDidZoom方法更新按钮框架,使其保持原位。这也将允许按钮在平移时随图像移动。

这是更新的视图结构:

在此处输入图像描述

适用的视图控制器代码段:

@interface MyViewController () {
    CGRect initialButtonFrame;

    ...
}

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    initialButtonFrame = self.button.frame;

    ...
}

- (void)scrollViewDidZoom:(UIScrollView *)sv
{

        self.button.frame = CGRectMake((initialButtonFrame.origin.x * self.scrollView.zoomScale),
                               (initialButtonFrame.origin.y * self.scrollView.zoomScale),
                               initialButtonFrame.size.width,
                               initialButtonFrame.size.height);

...
}

这里有几张图片显示了按钮相对于它在图片中的位置保持在适当的位置。请注意,当未缩放(第一张图像)和缩放时(第二张图像)时,按钮原点位于靠近消防员外套中心底部的红色区域的左上角。

在此处输入图像描述

在此处输入图像描述

于 2012-10-17T11:58:18.563 回答
0

imageScrollView在superview 之后添加按钮,imageScrollView使按钮不是滚动视图的子视图。

于 2012-10-17T11:54:23.027 回答