如何使用按钮移动图像?

Posted

技术标签:

【中文标题】如何使用按钮移动图像?【英文标题】:How to move an image with a button? 【发布时间】:2012-09-10 22:29:19 【问题描述】:

我有一个从 nsarray 字符串传递来制作图片的图像(clubcow.png)。然后 facedowncow 代表图片。我想知道如何制作一个按钮,当点击按钮时,它将把 facedowncow 移动到位置 (100,100)。任何提示将不胜感激。此外,这段代码还有更多内容,我只是发布了重要部分以了解发生了什么。

cardKeys = [[NSArray alloc] initWithObjects:@"clubcow",  nil];
currentName = [NSMutableString stringWithFormat:@"%@.png", [cowsShuffled objectAtIndex:currentcow]];
faceDowncow = (UIImageView *)[self.view viewWithTag:1];
faceDowncow.userInteractionEnabled = YES;

【问题讨论】:

您是否尝试在beginAnimationcommitAnimations 之间设置新的imageView 框架? 【参考方案1】:

我将首先创建一个UIButton 并将其添加到您的视图控制器的视图中。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(0, 0, 100, 20);
[button setTitle:@"Tap Me" forState:UIControlStateNormal];
[button addTarget:self action:@selector(animateImage:)
 forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

然后,将此按钮链接到一个函数,该函数将为您的 faceDowncow 对象设置动画。您可以将 faceDowncow 添加为视图控制器的属性,以便以下函数可以轻松引用它:

- (void)animateImage:(UIButton *)sender 
    [UIView animateWithDuration:0.2
     animations:^
         // change origin of frame
         faceDowncow.frame = CGRectMake(100, 100, faceDowncow.frame.size.width, faceDowncow.frame.size.height);
      completion:^(BOOL finished)
         // do something after animation
     ];

【讨论】:

【参考方案2】:

首先,看起来这段代码来自一个视图控制器子类,而牛是一个子视图。在这种情况下,您可能应该拥有它的属性,而不是一直通过它的标签来获取它。如果它在故事板场景/笔尖中实例化,那么您可以很容易地将插座连接到子类中的属性/ivar。

最简单的方法是创建按钮并使用目标操作,以便在点击它时调用视图控制器中的方法。在方法体中,获取对牛的引用并设置它的 frame 属性,如下所示:

[faceDowncow setFrame: CGRectMake(100,100,faceDowncow.bounds.size.width,faceDowncow.bounds.size.height)];

如果您不知道目标操作的工作原理,我建议您阅读Apple's documentation on the matter。就像获取一个按钮一样简单,调用一个方法来告诉它应该调用哪些事件来调用某个方法,然后实现该方法。

【讨论】:

以上是关于如何使用按钮移动图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止按钮推翻拖动手势

如何在内容页面中添加按钮以使用自定义渲染器 - 视图捕获图像

如何移动导航栏图像?

如何将浮动操作按钮锚定到App ToolBar,就像在指南图像中一样?

如何移动表格单元格并显示图像?

Matlab移动图像