我有一个带有一些标签的 UIView,我在我的故事板中构建了我想在单击地图注释时对其进行动画处理。我的一切都很好,除了动画有点不对劲。第一次单击注释时,帧位置未设置动画。但是,如果我取消选择然后重新选择注释,它的动画效果会很好。我还为背景颜色设置了动画,这似乎在第一次选择时工作正常,所以无论它是 frame 属性所特有的,也许是因为它在加载时没有正确设置?我再次在故事板中做了所有这些,所以我不知道我错过了什么。
我的标签/视图的代码(全部内置在我的故事板中,并使用正确的 IBOutlets 的参考出口)。文件.h:
@property (weak, nonatomic) IBOutlet UIView *stationinfo;
@property (weak, nonatomic) IBOutlet UILabel *stationname;
@property (weak, nonatomic) IBOutlet UILabel *stationsong;
@property (weak, nonatomic) IBOutlet UILabel *stationartist;
文件.m:
@synthesize stationinfo;
@synthesize stationname;
@synthesize stationsong;
@synthesize stationartist;
请在下面找到回调代码:
- (void) mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
//NSLog(@"Selected ");
self.stationname.text = ((userStation *)view.annotation).name;
self.stationsong.text = ((userStation *)view.annotation).song;
self.stationartist.text = ((userStation *)view.annotation).artist;
[UIView
animateWithDuration:0.25
delay: 0.0
options: UIViewAnimationCurveEaseInOut
animations:^ {
CGRect anim = self.stationinfo.frame;
anim.origin.y = 0.0;
self.stationinfo.frame = anim;
self.stationinfo.backgroundColor = [UIColor redColor];
}
completion:^(BOOL finished){
NSLog(@"DONE!");
}];
}
- (void) mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
//NSLog(@"Deselected");
[UIView
animateWithDuration:0.25
delay: 0.0
options: UIViewAnimationCurveEaseInOut
animations:^ {
CGRect anim = self.stationinfo.frame;
anim.origin.y = -100.0;
self.stationinfo.frame = anim;
self.stationinfo.backgroundColor = [UIColor greenColor];
}
completion:^(BOOL finished){
NSLog(@"DONE!");
}];
}
非常感谢您的帮助。谢谢你。