在点击它时更改UIView / UIControl的屏幕位置

时间:2011-01-20 01:50:35

标签: ios objective-c cocoa-touch uiview

我很清楚这是一个简单的问题。我想学习如何在用户选择CGRect / UIButton时将其移动到屏幕上的其他位置。感谢您的帮助。

- (void)showMeSomeButtons:(CGRect)frame{

    button = [[UIButton alloc] initWithFrame:frame];
    button.frame = CGRectMake(240, 150, 50, 50);

    UIImage *buttonGraphic = [UIImage imageNamed:@"1.png"];

    [button setBackgroundImage:buttonGraphic forState:UIControlStateNormal];
    [button addTarget:self.viewController action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

    [self addSubview:button];
}

-(void)buttonClicked{

    ???
}

2 个答案:

答案 0 :(得分:14)

我认为您需要在:语句中添加@selector(buttonClicked:),因为IBAction需要一个(id)sender方法属性。

您可以执行与以下代码类似的操作。

- (void)buttonClicked:(id)sender {
   CGRect frame = button.frame;
   frame.origin.x = 500; // new x coordinate
   frame.origin.y = 500; // new y coordinate
   button.frame = frame;
}

如果要为其设置动画,可以添加beginAnimation块。

- (void)buttonClicked:(id)sender {
    CGRect frame = button.frame;
    frame.origin.x = 500; // new x coordinate
    frame.origin.y = 500; // new y coordinate

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration: 0.25];
    button.frame = frame;
    [UIView commitAnimations];
 }

答案 1 :(得分:1)

CGRectOffset(rect, dx, dy)

通过增量X和Y移动矩形的原点。