Я прочитал почти все сообщения, которые я могу найти на этом сайте. Я нашел несколько чрезвычайно полезных сообщений, но не совсем нашел, как решить мою проблему. Я пытаюсь создать трамплин для просмотра изображений, где пользователь может вставить следующее изображение на место, но остановится на полпути и вернуться назад. Я читал в многочисленных сообщениях, что PanGestureRecognizer — это то, что нужно, но мне было очень трудно с ним.
В раскадровке я создал свой ViewController, добавил PanGestureRecognizer в ViewController и добавил действие.
Вот мой .h:
@interface PanViewController : UIViewController
- (IBAction)PanGesture:(UIPanGestureRecognizer *)recognizer;
@end
Вот мой .м:
@interface PanViewController ()
@property (nonatomic, retain) NSArray *PhotoBundle;
@property (nonatomic, retain) NSMutableArray *PhotoArray;
@property (nonatomic, retain) NSMutableArray *ImgViewArray;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//set i to the correct range if needed.
if (i > 0 && 1 <= _PhotoArray.count) {
}
else i = 0;
//create photo bundle from directory
_PhotoBundle = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg"inDirectory:@"Otter_Images"];
//create array from bundle of paths.
_PhotoArray = [[NSMutableArray alloc] initWithCapacity:_PhotoBundle.count];
for (NSString* path in _PhotoBundle)
{
[_PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}
//create initial image view
UIImage *currentImage = [[UIImage alloc] init];
currentImage = [_PhotoArray objectAtIndex:i];
UIImageView *currentIV = [[UIImageView alloc]initWithFrame:CGRectMake(100,100, 100, 100)];
[currentIV setImage:currentImage];
[self.view addSubview:currentIV];
//increment i to progress through array.
i++;
}
- (IBAction)PanGesture:(UIPanGestureRecognizer *)recognizer {
[self GestureDirection:recognizer];
}
- (void)GestureDirection:(UIPanGestureRecognizer *)gestureRecognizer
{
CGPoint direction = [gestureRecognizer velocityInView:self.view];
if(direction.x > 0)
{
NSLog(@"gesture went right");
UIImage *nextImg = [[UIImage alloc] init];
nextImg = [_PhotoArray objectAtIndex:i];
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(100,100, 100, 100)];
UIImageView *nextIV = [[UIImageView alloc] initWithFrame:CGRectMake(100,100, 100, 100)];
[nextIV setImage:nextImg];
[newView addSubview:nextIV];
self.view = newView;
}
else
{
NSLog(@"gesture went left");
}
}
Он показывает следующее изображение на панораме, но тогда в новом загруженном представлении нет PanGestureRecongizer. Я думал, что когда я добавлю PANGesture в раскадровку, он сделает его доступным для всех представлений в ViewController.
Это может быть отдельный вопрос, но как заставить анимацию работать на PanGesture? У меня было неправильное (очевидно) впечатление, что Пан действительно будет скользить.
Спасибо за вашу помощь!!