我有一个UIImageView init的滚动视图。我在UIImageView上添加一个按钮。当我缩放图像然后我的按钮也执行缩放。我怎么只能缩放图像而不是按钮。谢谢你的时间。
答案 0 :(得分: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);
...
}
以下是一些图像,显示按钮相对于其在图像中的位置而保持在原位。请注意,当未放大(第一张图像)和放大(第二张图像)时,按钮原点靠近消防员外套中心底部附近红色区域的左上角。
答案 1 :(得分:0)
在imageScrollView
之后添加imageScrollView
超级视图上的按钮,以便该按钮不是滚动视图的子视图。