如何在不缩放iPhone中的子视图的情况下缩放图像?
我有一个UIImageView init的滚动视图。我在UIImageView上添加一个按钮。当我缩放图像然后我的按钮也执行缩放。我怎么只能缩放图像而不是按钮。谢谢你的时间。
放置按钮和您不希望受UIScrollView
影响的任何其他视图,放大与UIScrollView
相同级别的视图。 这是为此目的而设置的示例视图层次结构。
滚动视图及其中的任何内容都将缩放(在本例中为“图像视图”)。 在下面的UIView中,滚动视图(在这种情况下,带有Default.png图像的图像视图)在缩放滚动视图时不会缩放。
编辑:
要使按钮保持在相对于图像的相同位置,将其作为子视图添加到滚动视图,将UIScrollViewDelegate
添加到视图控制器头。 在视图控制器实现中:捕获viewWillAppear
的初始UIButton
帧,并使用滚动视图委托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); ... }
这是一些图像,显示按钮相对于其在图像中的位置而保持在适当位置。 请注意,当未放大(第一张图像)和放大(第二张图像)时,按钮原点靠近消防员外套中心底部附近红色区域的左上角。
在imageScrollView
之后添加imageScrollView
imageScrollView
上的按钮,使按钮不是滚动视图的子视图。