У меня есть UIButton, который запускает действие цели, заставляя один вид перейти на другой на touchupinside.Как перенести изменение состояния UIButton перед запуском других анимаций UIView?
Если это произойдет, я также изменю состояние кнопки на выбранное, но фоновое изображение (для другого) на выбранном состоянии фактически не рисуется до завершения перехода UIView (или иногда оно также похоже на переход с переходом UIView .)
Как заставить кнопку перерисовывать новое фоновое изображение перед началом перехода к представлению?
код, который работает на UIControlEventTouchUpInside:
RhSubTab *activeTab;
for(RhSubTab *tab in self.tabViews.copy) {
tab.selected = NO;
[self.view bringSubviewToFront:tab];
if(tab.tag == type) activeTab = tab;
}
[self.view bringSubviewToFront:activeTab];
[activeTab setSelected:YES];
UIView *oldView;
UIView *newView;
for(UIView *view in self.contentViews.copy) {
if([self.view.subviews containsObject:view]) {
oldView = view;
}
if(view.tag == type) {
newView = view;
}
}
if(!oldView) [self.view addSubview:newView];
else [UIView transitionFromView:oldView toView:newView duration:0.5 options:(UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationCurveEaseInOut) completion:nil];
и кнопка заказа (RhSubTab) Класс:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self) {
[self setBackgroundImage:[[UIImage imageNamed:@"SubContentTabBg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 40)] forState:UIControlStateNormal];
[self setBackgroundImage:[[UIImage imageNamed:@"SubContentTabBg-selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 40)] forState:UIControlStateSelected];
}
return self;
}
Awesome. Если вы используете значение 0, а затем слишком быстро нажимаете кнопку, я вижу такое же поведение. Тем не менее, я помню, что с быстрым краном, UIControlEvents не всегда вызывается в «правильном» порядке. Добавление небольшой задержки (.1s) фиксировало ее в обоих случаях и в основном незаметно. – astoffel