Я использую uiscrollview для отображения UIImageview, который больше, чем размер экрана (так же, как просмотр фотографий в библиотеке фотографий).Затем мне нужно было добавить точку (я использую UIImageview, чтобы показать точку) на экране, когда пользователь нажимает.Получил, что работает.
Теперь то, что я пытаюсь сделать, это иметь эту точку, чтобы оставаться в том же месте относительно изображения.UIScrollview имеет некоторые уведомления о том, когда перетаскивание начинается и заканчивается, но ничего, что дает постоянное обновление его смещения содержимого.скажем, я поставил точку в X месте.Затем я прокручиваю вниз на 50 пикселей, точка должна плавно переместиться на 50 пикселей вверх (чтобы точка всегда оставалась в одном и том же месте относительно изображения).
У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: добавление кода
- (void)viewDidLoad
{
[super viewDidLoad];
//other code...
scrollView.delegate = self;
scrollView.clipsToBounds = YES;
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
scrollView.minimumZoomScale = (scrollView.frame.size.width / imageView.frame.size.width);
scrollView.maximumZoomScale = 10.0;
//other code...
}
добавление точки
-(void) foundTap:(UITapGestureRecognizer *) recognizer
{
CGPoint pixelPos = [recognizer locationInView:self.view];
UIImageView *testPoint = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"inner-circle.png"]];
testPoint.frame = CGRectMake(0, 0, 20, 20);
testPoint.center = CGPointMake(pixelPos.x, pixelPos.y);
[self.scrollView addSubview:testPoint];
NSMutableArray *tempTestPointArray = [[NSMutableArray alloc] initWithArray:testPointArray];
[tempTestPointArray addObject:testPoint];
testPointArray = tempTestPointArray;
NSLog(@"recorded point %f,%f",pixelPos.x,pixelPos.y);
}
получение точек пикселей
-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"zoom factor: %f", scrollView.zoomScale);
UIPinchGestureRecognizer *test = scrollView.pinchGestureRecognizer;
UIView *piece = test.view;
CGPoint locationInView = [test locationInView:piece];
CGPoint locationInSuperview = [test locationInView:piece.superview];
NSLog(@"locationInView: %@ locationInSuperView: %@", NSStringFromCGPoint(locationInView), NSStringFromCGPoint(locationInSuperview));
}