Итак, у меня есть подкласс UIView под названием MovableBlock
. Он отменяет touchesBegan
, touchesMoved
, touchesEnded
и touchesCancelled
. Движущаяся часть работает отлично.UIKit: Анимация вида во время его перемещения с помощью touchhesMoved
Когда MovableBlock
перемещен в левую сторону экрана, он имеет ширину 130 пикселей. Когда он перемещается в правую сторону экрана, он имеет ширину 80 пикселей. Я хотел бы оживить переход по размеру, так что, когда пользователь перетаскивает представление, MovableBlock
smoothy регулирует его размер.
Прямо сейчас, у меня есть это:
// Handles the start of a touch
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint pt = [[touches anyObject] locationInView:self];
startLocation = pt;
}
// Handles the continuation of a touch.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint svpt = [[touches anyObject] locationInView:self.superview];
CGPoint pt = [[touches anyObject] locationInView:self];
if (svpt.x < 130) {
[self setColumn:0];
}
else {
[self setColumn:1];
}
CGRect frame = [self frame];
frame.origin.x += pt.x - startLocation.x;
frame.origin.y += pt.y - startLocation.y;
[self setFrame: frame];
}
-(void)setColumn: (NSInteger)newColumn {
column = newColumn;
if (column != newColumn) {
[UIView beginAnimations:@"Resize Block" context:nil];
[UIView setAnimationDuration:0.2];
if (column == 0) {
[self setBounds: CGRectMake(self.bounds.origin.x, self.bounds.origin.y, 130, self.bounds.size.height)];
}
else {
[self setBounds: CGRectMake(self.bounds.origin.x, self.bounds.origin.y, 80, self.bounds.size.height)];
}
[UIView commitAnimations];
}
}
startPosition
и column
являются членами класса.
При перетаскивании MovableBlock
вокруг, он не изменяет размер (или анимирует). Кажется, я не могу найти причин, почему это не должно работать, хотя я также не могу найти примеры этого, поэтому, возможно, есть какой-то тонкий трюк, который мне не хватает.
Существует еще одна анимация в методе touchesEnded
, которая работает очень хорошо, поэтому я знаю, что анимационная часть вещей работает, только не в touchesMoved
.
Спасибо за помощь!