Я пытаюсь разработать приложение для Iphone;но я новичок, поэтому у меня много проблем.
У моего приложения есть представление по умолчанию и еще одно небольшое представление в главном представлении с именем flashcard.
Я хочудобавить возможность этого вида смахивания (или скольжения), как фотографии в Iphone.Например, если пользователь проводит пальцем по виду до тех пор, пока центр внутреннего вида не достигнет границ основного вида, будет две возможности: 1 - если пользователь закончит смахивать, прежде чем достичь внутреннего вида, вернется в исходное положение.2 - если пользователь не прекратит смахивание, внутренний вид будет выходить на экран с направления смахивания и возвращать экран с противоположного направления.
Поэтому я объявляю UIPanGestureRecognizer при viewDidLoad, как показано ниже
UIPanGestureRecognizer *panFlashCard = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanFlashCard:)];
[flashcard addGestureRecognizer:panFlashCard];
[panFlashCard release];
действие handPanFlashCard:
UIView *piece = [recognizer view];
CGPoint center = piece.center;
CGFloat x = 160; // the original x axis of inner view
if ([recognizer state] == UIGestureRecognizerStateChanged) {
CGPoint translation = [recognizer translationInView:piece ];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.55];
[piece setCenter:CGPointMake(piece.center.x + translation.x, center.y)];
[UIView commitAnimations];
CGFloat totalX;
totalX= x + translation.x;
if(translation.x <0)
{
if (totalX <= 0)
{
[self showNextCard];
}
else
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.55];
[piece setCenter:CGPointMake(self.view.center.x, center.y)];
[UIView commitAnimations];
}
}
else
{
if (totalX >= self.view.bounds.size.width)
{
[self showPreviousCard];
}
else
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.55];
[piece setCenter:CGPointMake(self.view.center.x, center.y)];
[UIView commitAnimations];
}
}
}
действие showNextCard:
[flashcard setCenter:CGPointMake(self.view.bounds.size.width + flashcard.bounds.size.width, flashcard.center.y)];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.55];
[flashcard setCenter:CGPointMake(self.view.center.x, flashcard.center.y)];
[UIView commitAnimations];
действие showPreviousCard:
[flashcard setCenter:CGPointMake(0 - flashcard.bounds.size.width, flashcard.center.y)];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.55];
[flashcard setCenter:CGPointMake(self.view.center.x, flashcard.center.y)];
[UIView commitAnimations];
Когда я запускаю это приложение, оно успешно создается и работает, ночто-то не так с анимацией, некоторые ошибки в кадре, я думаю.
Пожалуйста, помогите мне исправить этот код и запустить плавную анимацию при перелистывании.