2010-08-21 53 views
1

我试图改变延迟时间后,我的图像视图的位置,就像下面的代码改变位置的UIImageView通过选择

CGPoint pointOne=CGPointMake(150, 200); 
UIImageView *sampleImage=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hello.png"]]; 
[sampleImage performSelector:@selector(setCenter:) withObject:[NSValue valueWithCGPoint:pointOne] afterDelay:0.5]; 

,因为图像视图不接受nsvalue不正常工作PLZ发言权任何其他解决方案来传递cgpoint或cgrect作为对象。提前致谢。

回答

1

只需创建另一个方法,即使在给定NSValue的ViewController中,也会将其转换回CGPoint并将其设置为UIIMageView。 稍后请拨打performSelector:withObject:afterDelay:与此方法联系。 如果您甚至需要传递对UIImageView的引用,则可以传递包含视图和值的NSDictionary。

+0

thx for ur reply。但我想另一种方式,而不创建新的方法... – KingofHeaven 2010-08-21 11:47:31

+0

你不能使用'setCenter:'通过传递除'CGPoint'之外的任何东西作为参数 – rano 2010-08-21 12:12:59

0

另一种选择是使用核心动画:

[UIView beginAnimations: @"MyMoveAnimation" context: nil]; 
[UIView setAnimationDelay: 0.5]; 
UIImageView* view = ... get view ...; 
view.center = ... new center ...; 
[UIView commitAnimations]; 

如果您不希望以动画时间移动​​到的地方,那么你还可以设置为零,或设置它的transparancy使其消失in。