reeder 앱 제작자가 pinch-to-expand 사진을 전체 화면으로 사용하여 iphone/ipad 앱에서하는 것과 똑같은 작업을 수행하는 방법을 찾고 있습니다.Reeder 앱처럼 전체 화면으로 사진 찍기 pinch
핀치가 열린 상태에서 전체 화면보기로 전환하려는 표 셀에 uiimageview가 있거나 두 번 살짝 누르십시오. 비슷한 애니메이션을 사용하고 싶습니다.
팁을 보내 주시면 감사하겠습니다.
reeder 앱 제작자가 pinch-to-expand 사진을 전체 화면으로 사용하여 iphone/ipad 앱에서하는 것과 똑같은 작업을 수행하는 방법을 찾고 있습니다.Reeder 앱처럼 전체 화면으로 사진 찍기 pinch
핀치가 열린 상태에서 전체 화면보기로 전환하려는 표 셀에 uiimageview가 있거나 두 번 살짝 누르십시오. 비슷한 애니메이션을 사용하고 싶습니다.
팁을 보내 주시면 감사하겠습니다.
좋아요. 나는이 문제를 직접 해결할 수있었습니다. 전환 방법을 사용하는 방법을 잘 모르겠지만 동일한 위치에서보기를 복제 한 다음이를 폭파해야했습니다.
http://screencast.com/t/MLTuGkIYh
그래서 큰 이미지를 포함하는 내 셀에 둘 다 핀치 및 탭 제스처 인식기를 연결.self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
UIPinchGestureRecognizer *pinchGesture = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)] autorelease];
UITapGestureRecognizer *tapGesture = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)] autorelease];
tapGesture.numberOfTapsRequired = 2;
self.imageView.userInteractionEnabled = YES;
self.imageView.multipleTouchEnabled = YES;
[self.imageView addGestureRecognizer:pinchGesture];
[self.imageView addGestureRecognizer:tapGesture];
[cell.contentView addSubview:self.imageView];
다음은 나머지 코드입니다. 기본적으로 나는 제스처를 인식했을 때 (그리고 집어 넣을 때, 완료되었는지 확인) 동일한 위치 (convertRect 물건을 통해 얻음)에 복제보기를 배치 한 다음 프레임과 배경색을 애니메이션으로 만듭니다. 그것에서 돌아 왔을 때, 나는 반대를한다. 확대하면서 실제 크기를 조정하려면 사진을 원하는 경우
- (void)handlePinchGesture:(id)sender
{
if (((UIPinchGestureRecognizer *)sender).state == UIGestureRecognizerStateEnded) {
if(((UIPinchGestureRecognizer *)sender).view == self.imageView)
{
if (((UIPinchGestureRecognizer *)sender).scale > 1) {
[self showFloorPlanFullScreen];
}
} else {
if (((UIPinchGestureRecognizer *)sender).scale < 1) {
[self closeFloorPlanFullScreen];
}
}
}
}
- (void)handleTap:(id)sender
{
if (((UITapGestureRecognizer *)sender).view == self.imageView) {
[self showFloorPlanFullScreen];
} else {
[self closeFloorPlanFullScreen];
}
}
- (void)showFloorPlanFullScreen
{
CGRect newRect = [self.imageView convertRect:self.imageView.bounds toView:[self.splitViewController.view superview]];
UIImage *image = self.imageView.image;
self.fullScreenImageView = [[[UIImageView alloc] initWithImage:image] autorelease];
UIPinchGestureRecognizer *pinchGesture = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)] autorelease];
UITapGestureRecognizer *tapGesture = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)] autorelease];
tapGesture.numberOfTapsRequired = 2;
self.fullScreenImageView.userInteractionEnabled = YES;
self.fullScreenImageView.multipleTouchEnabled = YES;
[self.fullScreenImageView addGestureRecognizer:pinchGesture];
[self.fullScreenImageView addGestureRecognizer:tapGesture];
self.fullScreenImageView.contentMode = UIViewContentModeScaleAspectFit;
self.fullScreenImageView.frame = newRect;
self.fullScreenImageView.backgroundColor = [UIColor clearColor];
[[self.splitViewController.view superview] addSubview:self.fullScreenImageView];
CGRect splitViewRect = self.splitViewController.view.frame;
[UIView animateWithDuration:0.5 animations:^{
self.fullScreenImageView.backgroundColor = [UIColor blackColor];
self.fullScreenImageView.frame = splitViewRect;
}];
}
- (void)closeFloorPlanFullScreen
{
CGRect newRect = [self.imageView convertRect:self.imageView.bounds toView:[self.splitViewController.view superview]];
[UIView animateWithDuration:0.5
animations:^{
self.fullScreenImageView.backgroundColor = [UIColor clearColor];
self.fullScreenImageView.frame = newRect;
}
completion:^(BOOL finished) {
[self.fullScreenImageView removeFromSuperview];
self.fullScreenImageView = nil;
}];
}
, 나는 곤란이 시작되는 즉시 중복보기를 추가하는 것이 좋습니다 (그리고만큼의 스케일링 등> 1) 다음 변환 적용됩니다 :
을CGAffineTransform myTransformation = CGAffineTransformMakeScale(((UIPinchGestureRecognizer *)sender).scale, ((UIPinchGestureRecognizer *)sender).scale);
self.fullScreenImageView.transform = myTransformation;
꼬집음이 끝나면 검은 색으로 페이드되고 프레임이 조정됩니다. 나는이 방법을 사용하지 않기로 결정했는데 핀치를 인식하거나 더블 탭만으로 충분할 것이라고 생각합니다.
UIControl에 UIImageView를 포함하고 IBAction을 UIControl 이벤트에 연결해야합니다.
이미지보기에서 UIPinchGestureRecognizer
을 사용하여 이미지보기를 전체 크기로 날려 버리는 핀치 및 UIView
전환 방법을 인식합니다.
UIView 전환 방법은 무엇을 의미합니까? –
@Bob : 이름이 "transition"으로 시작하는 UIView 클래스 메서드. 예 : [transitionWithView : duration : options : animations : completion :] (http://developer.apple.com/library/ios/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/) clm/UIView/transitionWithView : 기간 : 옵션 : 애니메이션 : 완료 :). – Jesper
나는 아직도 어떻게 할 것인지 잘 모르겠다. 어떤예요? 따라서 테이블보기에서 사진의 작은 버전을 가지고 있다면 전체 화면을 표시하고 두 화면 사이를 전환 한 새로운보기를 만들 수 있습니까? 테이블이 분할 된 뷰에있는 경우, 새로 만든 전체 화면보기가 제대로 작동하려면 (수퍼바이저가 현명하게) 살아야합니까? –
멋지다! 당신은 당신 자신의 질문에 대답했습니다. 그것을 표시하십시오, 다른 사람들이 도움이 될 것입니다 .. –
네. 2 시간을 기다려야했다. :) –
당신은 선생님, 학자와 신사입니다. – MrTristan