Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone中如何在不缩放子视图的情况下缩放图像?_Iphone_Ios_Xcode_Ios Simulator - Fatal编程技术网

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

在iPhone中如何在不缩放子视图的情况下缩放图像?,iphone,ios,xcode,ios-simulator,Iphone,Ios,Xcode,Ios Simulator,我有UIImageView初始化的滚动视图。我在UIImageView上添加了一个按钮。当我缩放图像时,我的按钮也会执行缩放。我如何只能缩放图像而不是按钮。提前感谢您的时间 在imageScrollView之后添加imageScrollView超级视图上的按钮,使按钮不是滚动视图的子视图。将按钮和任何其他视图放置在与UIScrollView相同级别的视图中,您不想受UIScrollView缩放影响。下面是一个仅为此目的而设置的视图层次结构示例 滚动视图和其中的任何内容都将缩放(在本例中为图像视

我有UIImageView初始化的滚动视图。我在UIImageView上添加了一个按钮。当我缩放图像时,我的按钮也会执行缩放。我如何只能缩放图像而不是按钮。提前感谢您的时间


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

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

滚动视图和其中的任何内容都将缩放(在本例中为图像视图)。 在UIView中,当滚动视图被缩放时,滚动视图下方的UIView(在本例中,使用Default.png图像的图像视图)将不会缩放

编辑:

要使按钮保持在相对于图像的相同位置,将其作为子视图添加到滚动视图中,请将
UIScrollViewDelegate
添加到视图控制器标题中。在视图控制器实现中:捕获
视图中将出现的初始
ui按钮
,并使用滚动视图委托
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]:您好Bharathi D,感谢您的快速回复,但这并不能解决我的问题,因为当我缩放图像时,UIIMageView中实际子视图的按钮也会缩放。我希望我的按钮不会缩放,并且其在图像上的位置保持不变。提前感谢。此问题的任何相关代码块?请删除注释使用代码并使用问题下方的
Edit
按钮将其移动到OP。实际上,没有不同的代码,我只需获取一个滚动视图。然后我在其上启用滚动属性。之后,我在其中子视图UIImageView。在此图像视图中,我启用用户交互。之后,我在UIImageView中子视图UIButton。现在,当我m滚动视图(表示我缩放图像),然后单击我的ui按钮(这是在UIImageView中)也是缩放,我希望我缩放UIImageView,但UIButton不会缩放。谢谢。你能再清楚一点吗..我不太理解它。谢谢你的兴趣,但如果我在任何其他视图上添加按钮,它将不会缩放,但图像会缩放,按钮相对于图像的位置也会改变。我希望图像将缩放,按钮将不缩放(按钮大小保持不变)按钮相对于图像的位置保持不变。谢谢。谢谢你的建议,但我已经尝试过了。我需要更改按钮相对于图像的位置。如果我按照你的操作,按钮将显示在屏幕上,图像将在其后面缩放,因此图像上的按钮位置不会随着图像缩放而更改。谢谢bobnoble…但是它的位置没有适当的改变。好像图像上有一个红色标记,我在图像上添加了一个按钮,因为按钮的角会接触到红色标记。然后当我缩放图像时,按钮改变了位置,红色标记和按钮会移开。所以这不会解决问题。我需要同时保留这两个(红色标记和按钮)在缩放时切换。让我澄清一下,按钮位置在
scrollViewDidZoom
处更改,以使其靠近红色标记或任何其他区域,新位置的计算由您决定。我相信上面的答案中缺少的是坐标(而不是尺寸)缩放时,您需要将坐标乘以滚动视图
zoomScale
值。您也可以使用此方法设置滚动视图子视图的位置,如果有兴趣,请自己尝试。@Jack\u iPhone-根据现场建议,这是使用滚动视图
zoomScale
的问题。我在
scrollViewDidZoom
并添加了两幅图像,以显示未缩放和缩放时相对于图像视图的按钮位置。