在屏幕上永久移动一帧自定义 UIView
Permanently move a frame of custom UIView on screen
我对 iOS 和 Objective-c 上的动画有一点小问题。
我正在尝试创建一个纸牌游戏,当游戏开始时,牌组会在 table 上分发纸牌并播放动画。问题是一开始卡片都在屏幕底部排成一排,然后随着动画它们分布在整个 table。但是当我点击他们中的任何一个时,他们 return 在他们的初始位置,尽管游戏继续工作,因为他们翻转和取消翻转,以及分数正常工作。我附上了一些代码片段和视图片段。
以下是屏幕截图的链接:
1)游戏开始时的卡牌:prntscr.com/68r8yj
2)初始动画结束时的卡片:prntscr.com/68r92u
3) 卡片,当我点击其中任何一张时:prntscr.com/68r2hr
这是我的代码片段
-(void)viewDidAppear:(BOOL)animated {
CGPoint startPoint = {21, 34};
for(int i = 0; i < [self.cardsView count]; i++) {
FrenchPlayingCardView *view = [self.cardsView objectAtIndex:i];
int width = view.bounds.size.width;
int height = view.bounds.size.height;
CGRect newFrame = CGRectMake(startPoint.x, startPoint.y, width, height);
/*[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionTransitionNone
animations:^(){
view.frame = newFrame;;
}
completion:nil];*/
[UIView beginAnimations:@"move" context:nil];
[UIView setAnimationDuration:3.0];
view.frame = newFrame;
[UIView commitAnimations];
NSLog(@"index:%d %f %f", i, view.frame.origin.x, view.frame.origin.y);
startPoint.x += 76;
if(i % 4 == 3) {
startPoint.y += 100;
startPoint.x = 21;
}
}
[super viewDidAppear:animated];
}
在动画之前调用 [super viewDidAppear] 并关闭自动布局。我认为自动布局会导致这个
我对 iOS 和 Objective-c 上的动画有一点小问题。 我正在尝试创建一个纸牌游戏,当游戏开始时,牌组会在 table 上分发纸牌并播放动画。问题是一开始卡片都在屏幕底部排成一排,然后随着动画它们分布在整个 table。但是当我点击他们中的任何一个时,他们 return 在他们的初始位置,尽管游戏继续工作,因为他们翻转和取消翻转,以及分数正常工作。我附上了一些代码片段和视图片段。
以下是屏幕截图的链接:
1)游戏开始时的卡牌:prntscr.com/68r8yj
2)初始动画结束时的卡片:prntscr.com/68r92u
3) 卡片,当我点击其中任何一张时:prntscr.com/68r2hr
这是我的代码片段
-(void)viewDidAppear:(BOOL)animated {
CGPoint startPoint = {21, 34};
for(int i = 0; i < [self.cardsView count]; i++) {
FrenchPlayingCardView *view = [self.cardsView objectAtIndex:i];
int width = view.bounds.size.width;
int height = view.bounds.size.height;
CGRect newFrame = CGRectMake(startPoint.x, startPoint.y, width, height);
/*[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionTransitionNone
animations:^(){
view.frame = newFrame;;
}
completion:nil];*/
[UIView beginAnimations:@"move" context:nil];
[UIView setAnimationDuration:3.0];
view.frame = newFrame;
[UIView commitAnimations];
NSLog(@"index:%d %f %f", i, view.frame.origin.x, view.frame.origin.y);
startPoint.x += 76;
if(i % 4 == 3) {
startPoint.y += 100;
startPoint.x = 21;
}
}
[super viewDidAppear:animated];
}
在动画之前调用 [super viewDidAppear] 并关闭自动布局。我认为自动布局会导致这个