0
CATILEDLayer 및 UIScrollView를 사용하여 크고 고품질의 확대/축소 가능 이미지를 표시하려고합니다. 내 코드는 iOS Large image downsizing sample code을 기반으로합니다.처음으로 확대/축소 한 후에 UIScrollView로 UIView를 이동하면 작동하지 않습니다.
내있는 UIScrollView의 계층 구조가 같다 :
- 있는 UIScrollView
- 있는 UIImageView : 큰 이미지의 첫 번째 썸네일을 나타냅니다
- 올드 TiledView
- TiledView
스크롤보기에 이미지가 움직이기를 원합니다.
나는이 StackOverflow topic에서 찾은 것을 시도하고 작동합니다. 그러나 이미지를 처음으로 확대 한 후에는 이미지를 움직일 수 없게됩니다. 왜 그런지 몰라?
-(id)initWithFrame:(CGRect)frame image:(UIImage*)_image {
if((self = [super initWithFrame:frame])) {
// Set up the UIScrollView
// Piece of code
self.canCancelContentTouches = NO;
UIPanGestureRecognizer* panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panGesture setMinimumNumberOfTouches:1];
[panGesture setMaximumNumberOfTouches:1];
[panGesture setDelegate:self];
[frontTiledView addGestureRecognizer:panGesture];
frontTiledView.exclusiveTouch = YES;
UIPanGestureRecognizer* panGesture2 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panGesture2 setMinimumNumberOfTouches:1];
[panGesture2 setMaximumNumberOfTouches:1];
[panGesture2 setDelegate:self];
[backgroundImageView addGestureRecognizer:panGesture2];
backgroundImageView.exclusiveTouch = YES;
UIPanGestureRecognizer* panGesture3 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panGesture3 setMinimumNumberOfTouches:1];
[panGesture3 setMaximumNumberOfTouches:1];
[panGesture3 setDelegate:self];
[backTiledView addGestureRecognizer:panGesture3];
backTiledView.exclusiveTouch = YES;
}
return self;
}
- (void)move:(UIGestureRecognizer*)sender {
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:frontTiledView];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
positionDeplacement = frontTiledView.center;
}
translatedPoint = CGPointMake(positionDeplacement.x+translatedPoint.x, positionDeplacement.y+translatedPoint.y);
frontTiledView.center = translatedPoint;
backTiledView.center = translatedPoint;
backgroundImageView.center = translatedPoint;
}
감사 :
여기 내 코드입니다.
이 조금 혼란 :
여기 내 코드입니다. 당신은 동시에 그리고 똑같이 움직이기를 바라는 세 가지 견해를 가지고 있습니다. LargeImage 예제를로드했는데 문제없이 이미지를 이동하고 확대/축소 할 수 있습니다. 당신이하려고하는 것은 무엇이 다른가? – Daniel
LargeImage 예제 scrollview에는 3 개의보기가 있습니다. 그래서 그것들을 동시에 동등하게 이동하려고합니다. 어떤 하위 뷰에서 팬 제스처를 적용합니까? – Seb
코드를 사용하여 설명하는 것을 재현 할 수 없습니다. 왜 UIScrollView에 UIPanGestureRecognizer를 사용하고 싶은지 잘 모르겠습니다. 스크롤 뷰에는 패닝을위한 고유의 대리자 메소드가 있습니다. – Daniel