如何用按钮移动图像?

时间:2012-09-10 22:29:19

标签: objective-c ios cocoa-touch uikit core-animation

我有一个从nsarray字符串传递的图像(clubcow.png)来制作图片。然后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;

2 个答案:

答案 0 :(得分:4)

首先创建一个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
     }];
}

答案 1 :(得分:1)

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

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

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

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