UISegmentedControl有一个方法:
- (void)insertSegmentWithTitle:(NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated
如果我将动画设置为true,有没有办法让我找出动画何时完成(即完成处理程序,动画委托,持续时间)?
答案 0 :(得分:2)
一段时间后我也面临这样的问题来检查UITableView
的动画完成情况,我发现了一个非常有用的帖子 - Animation End Check
你也可以使用这种方法,在发布这个答案之前,我已经在分段控件上检查了它,它运行良好。您可以使用like -
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *itemArray = [NSArray arrayWithObjects: @"One", @"Two", @"Three", nil];
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
self.segmentedControl.frame = CGRectMake(10, 100, 250, 50);
self.segmentedControl.selectedSegmentIndex = 0;
[self.view addSubview:self.segmentedControl];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[CATransaction begin];
[CATransaction setCompletionBlock:^{
NSLog(@"Animation finished");
}];
[self.segmentedControl insertSegmentWithTitle:@"Four" atIndex:3 animated:YES];
[CATransaction commit];
}
这可以作为默认动画使用CALayer
动画,在这里我们定义一个隐式CATransaction
。