使用UIButton移动UIImageView

时间:2015-01-28 22:31:55

标签: ios uiimageview uibutton mapbox

我对Xcode和iOS开发很新,但到目前为止一直在享受这个挑战。

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

我想将此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 个答案:

答案 0 :(得分:0)

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

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

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