动画UISegmentedControl的框架

时间:2011-02-24 08:47:06

标签: cocoa-touch ios

我有一个UISegmentedControl,我正试图使用​​以下(简化但功能性)代码的框架设置动画:

UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"item1", @"item2", nil]];
[seg setFrame:CGRectMake(0, 300, 100, 50)];
[self addSubview:seg];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^ {
    [UIView animateWithDuration:5.0 animations: ^ {
        [seg setFrame:CGRectMake(100, 0, 400, 50)];
    }];
});

大小会立即发生变化,但位置会正常动画。为什么这样做,有没有解决办法?

2 个答案:

答案 0 :(得分:6)

如果动画块中需要,请将分段控件告诉布局。

[UIView animateWithDuration:.25f animations:^{
    self.segmentedControl.frame = frame;
    [self.segmentedControl layoutIfNeeded];
}];

答案 1 :(得分:0)

您似乎可以通过手动调整动画块内UISegmentedControl的所有子视图来解决此问题。