UISegmentedControl插入动画完成处理程序

时间:2014-07-16 02:51:07

标签: ios uisegmentedcontrol

UISegmentedControl有一个方法:

- (void)insertSegmentWithTitle:(NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated

如果我将动画设置为true,有没有办法让我找出动画何时完成(即完成处理程序,动画委托,持续时间)?

1 个答案:

答案 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