使用 UIButton 移动 UIImageView

Posted

技术标签:

【中文标题】使用 UIButton 移动 UIImageView【英文标题】:Moving a UIImageView with a UIButton 【发布时间】:2015-01-28 22:31:54 【问题描述】:

我对 Xcode 和 ios 开发相当陌生,但到目前为止我一直很享受挑战。

我遇到了一个问题,我试图移动一个UIImageView 我以编程方式在 MapBox 地图视图之上创建。

我想将这个UIImageViewUIButton 移动一个像素,UIButton 位于mapView 的顶部。

这是我目前在 ViewController.m 中的代码:

    [self.view addSubview:mapView];

    UIImageView* ship;

    ship=[[UIImageView alloc] initWithFrame:CGRectMake(150, 200, 40, 40)];
    UIImage * image;
    image=[UIImage imageNamed:@"spaceShip"];
    [ship setImage:image];
    ship.alpha = 0.75;
    [self.view addSubview:ship];

    UIButton *upButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    upButton.frame = CGRectMake(150, 250, 40, 40);
    upButton.userInteractionEnabled = YES;

    [upButton setTitle:@"UP" forState:UIControlStateNormal];

    [upButton addTarget:ship action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:upButton];



- (IBAction)moveUp 
    ship.center = CGPointMake(ship.center.x, ship.center.y -10);

谁能告诉我如何让这个 upButton 识别和移动我的UIImageView

【问题讨论】:

【参考方案1】:

一个问题是 ship 是您在第一个代码块中创建的局部变量。当该代码块超出范围时,ship 将为零,因此当您尝试在按钮方法中设置它的中心时,它将不起作用。您需要为 ship 创建一个属性,然后使用它。

您的另一个问题是,当您将操作添加到按钮时,您将其称为 buttonPressed:,但您实现的方法是 moveUp。因此,如果您创建一个名为 ship 的属性,那么您的操作方法应该是,

- (void)buttonPressed:(UIButton *) sender 
    self.ship.center = CGPointMake(self.ship.center.x, self.ship.center.y -10);

【讨论】:

@MorganJones,如果这个答案解决了你的问题,你应该接受它。

以上是关于使用 UIButton 移动 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

使用 CABasicAnimation 移动时无法使用 UIButton

UIButton移动动画

使用自动布局时在 Y 轴上移动 UIButton

使用 CABasicAnimation 旋转的 UIButton 不会移动初始触摸坐标

iPhone:移动没有动画的 UIButton

如何使用 UIButton 点击​​事件移动下一页和上一页?