如何在不缩放iPhone中的子视图的情况下缩放图像?

时间:2012-10-17 11:22:47

标签: iphone ios xcode ios-simulator

我有一个UIImageView init的滚动视图。我在UIImageView上添加一个按钮。当我缩放图像然后我的按钮也执行缩放。我怎么只能缩放图像而不是按钮。谢谢你的时间。

enter image description here

2 个答案:

答案 0 :(得分:2)

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

enter image description here

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

修改

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

这是更新后的视图结构:

enter image description here

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

@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);

...
}

以下是一些图像,显示按钮相对于其在图像中的位置而保持在原位。请注意,当未放大(第一张图像)和放大(第二张图像)时,按钮原点靠近消防员外套中心底部附近红色区域的左上角。

enter image description here

enter image description here

答案 1 :(得分:0)

imageScrollView之后添加imageScrollView超级视图上的按钮,以便该按钮不是滚动视图的子视图。