我有一个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)];
}];
});
大小会立即发生变化,但位置会正常动画。为什么这样做,有没有解决办法?
答案 0 :(得分:6)
如果动画块中需要,请将分段控件告诉布局。
[UIView animateWithDuration:.25f animations:^{
self.segmentedControl.frame = frame;
[self.segmentedControl layoutIfNeeded];
}];
答案 1 :(得分:0)
您似乎可以通过手动调整动画块内UISegmentedControl的所有子视图来解决此问题。