2012-06-06 7 views
0

저는 IB에서 추가 한 3 개의 스크롤 뷰가 있습니다. 그 다음 뷰 뷰의 뷰에 각 하위 뷰에 UIImageView를 추가하는 메서드를 호출합니다. 내가iOS 스크롤 뷰 하위 뷰

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 

return [scrollView.subviews objectAtIndex:0]; 
} 

를 사용하지만 imageviews가 파단에 추가하기 전에 viewForZoomingInScrollView 호출지고 그래서 각 하위 뷰를 확대하고 싶습니다. 어떻게 이것을 해결할 수 있습니까? 당신이 확대 구성하기 전에 하위 뷰 같은 이미지보기를 추가

-(void) loadImages{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSData *imageData1 = [defaults dataForKey:@"image1"]; 
NSData *imageData2 = [defaults dataForKey:@"image2"]; 
NSData *imageData3 = [defaults dataForKey:@"image3"]; 
UIImage *img1 = [UIImage imageWithData:imageData1]; 
UIImage *img2 = [UIImage imageWithData:imageData2]; 
UIImage *img3 = [UIImage imageWithData:imageData3]; 

[self loadImage:img1 toScrollView:scrollViewTop]; 
[self loadImage:img2 toScrollView:scrollViewLeft]; 
[self loadImage:img3 toScrollView:scrollViewRight]; 
} 

-(void) loadImage:(UIImage *)image toScrollView:(UIScrollView *)scrollView 
{ 
//scale and rotate image to default 
UIImage *scaledImage = scaleAndRotateImage(image); 

//create imageview and add image to the view 
UIImageView *imageView = [[UIImageView alloc]initWithImage:scaledImage]; 

CGFloat imageWidth = scaledImage.size.width; 
CGFloat imageHeight = scaledImage.size.height; 

int scrollWidth = scrollView.frame.size.width; 
int scrollHeight = scrollView.frame.size.height; 

//Limit by width or height, depending on which is smaller in relation to 
//the scrollview dimension. 
float scaleX = scrollWidth/imageWidth; 
float scaleY = scrollHeight/imageHeight; 
float scaleScroll = (scaleX < scaleY ? scaleY : scaleX); 

// scrollView.bounds = CGRectMake(0, 0,imageWidth , imageHeight); 
//scrollView.frame = CGRectMake(0, 0, scrollWidth, scrollHeight); 

scrollView.delegate = self; 

scrollView.contentSize = imageView.frame.size; 
scrollView.pagingEnabled = NO; 
scrollView.maximumZoomScale = scaleScroll*3; 
scrollView.minimumZoomScale = scaleScroll; 
scrollView.zoomScale = scaleScroll; 

[scrollView addSubview:imageView]; 

} 
+0

(어떤 방법으로) suview ImageViews를 추가하고 있습니까 – trumpetlicks

+0

'NSLog @ ("% @", [scrollView.subviews objectAtIndex : 0])를 추가하면 – mkral

+0

메서드에 대한 편집을 확인하십시오. 하위 뷰를 추가하면 올바른 데이터가 반환됩니다. 하지만로드되기 전에 viewForZoomingInScrollView 메서드가 호출됩니다. – mkral

답변

1

시도 :

은 loadImages 방법입니다. 대리인 지정 전에 말하십시오.

viewForZoomingInScrollView:이 스크롤 뷰의 설정자 중 하나에 의해 호출 중입니다. 거기에서 스택 추적을 보면 어느 것이 있는지 알려줄 것입니다.

+0

당신이 말하는 말이 맞지만 이걸 어떻게 바꿀 지 모르겠습니다. Interface Builder에서 scrollView를 빌드하고 UIImageView를 프로그래밍 방식으로 추가했습니다. 또한, 나는 어떻게 오류를 쌓을 지 모르겠다. 감사! – mkral

+0

이 줄을 사용하십시오 "scrollView.delegate = self;" "[scrollView addSubview : imageView];"아래에 넣으십시오. 귀하의 loadImage 루틴에서 Wilbur가 말하는 것은입니다! – trumpetlicks

+0

사실 나는'scrollView.delegate = self;'위의'[scrollView addSubview : imageView];를 움직이면 확대/축소 설정 도구 위로 이동하기 때문에 어떤 방법 으로든 작동 할 수 있습니다. 스택 트레이스를 보려면'viewForZoomingInScrollView :'메소드 안에있는 라인 번호를 클릭하여 Xcode에 중단 점을 추가 한 다음 앱을 실행하십시오. 앱이 해당 코드 줄에 도달하면 앱이 일시 중지되고 스택 추적이 Xcode의 왼쪽 사이드 바에 표시됩니다. –