2014-01-28 6 views
0

입니다있는 UIScrollView의 contentSize :나는이 같은 뷰 계층이 아이 뷰

:

-First View Controller 
    -View 
    -ScrollView 
     -TBD 
    -ImageView 

내가 (사과 문서에서)에있는 ScrollView의 콘텐츠 크기를 설정하려면 다음을 사용하려고

UIScrollView *tempScrollView=(UIScrollView *)self.view; 
tempScrollView.contentSize=CGSizeMake(320,1000); 

하지만 오류 얻을 :

Terminating app due to uncaught exception 'NSInvalidArgumentException' 

어떻게 수정할 수 올바르게있는 ScrollView에 대한 contentSize을 설정?

+1

있는 UIScrollView * tempScrollView = (있는 UIScrollView *) self.view; 이 줄은 틀린 것으로 보인다. 스크롤 뷰는 어디에 설정되어 있는가? IBoutlet을 만들었거나 코드로 만들었습니까? 현재 subView로 scollView가 포함 된 viewcontroller의 UIView를 얻고 있습니다. – BooRanger

+0

@BooRanger 내 scrollview는 스토리 뷰에서 스크롤 뷰를 객체 라이브러리 밖으로 드래그하여 뷰에 끌어다 놓아 스토리 보드에 만들었습니다. – livinzlife

+0

그렇기 때문에 스크롤 뷰에 액세스 할 수 있도록 IBoulet을 설정해야합니다. 이 비디오는 잘하면 당신이 무엇을 해야할지에 대한 아이디어를 줄 것입니다, 미안 해요. https://www.youtube.com/watch?v=xq-a7e_l_4I – BooRanger

답변

1

그래서 문제가이

self.view 컨트롤러에 대한 기본 UIView의를 얻을 수있다, 당신의있는 ScrollView는 self.vie의 하위 뷰 w 이것을 액세스하려면 IBOutlet이 필요합니다.

그래서 우선은 viewControllers

Create an IBOutlet for UIScrollView

그런 다음 스토리 보드에 IBoulet로 viewContoller에 넣어 ypou의 당신의있는 ScrollView 후크 .H 에 함께 IBOutlet을 만드는 것입니다. scrollView -> 하나의 권한 유틸리티 탭 -> 가장 오른쪽 탭을 훑어서 원 안에 화살표가 나타납니다. -> 참조 콘센트를 클릭하고보기 콘트롤러로 드래그하면> 옵션이 나타납니다. scrollView 또는 view를 선택하십시오.

Hook the IBoulet up

선택있는 ScrollView. 당신은 당신의 코드 단지로 변경이 지금의

Select ScrollView

:

self.scrollView.contentSize = CGSizeMake(320,1000); 
0

자동 레이아웃을 사용하는 경우 scrollViewcontentSize을 설정하는 대신 scrollView 안에있는 모든 하위보기가 있도록 제약 조건을 설정해야합니다. 그러면 귀하의 contentSize이 귀하의 제약 조건에 따라 자동으로 결정됩니다.

자세한 내용은 this post을 참조하십시오.

0

보기 컨트롤러의보기가 스크롤보기가 아니기 때문에 예외가 발생합니다. 당신이 이

UIScrollView *tempScrollView=(UIScrollView *)[self.view viewWithTag:1000]; 
tempScrollView.contentSize=CGSizeMake(320,1000); 

1000

필수 아닌 다음과 같이 할 1000에있는 ScrollView의 태그를 설정처럼 UIScrollView tnen로 뷰 컨트롤러의 뷰의 클래스의 가능한 구제 1. 변경 사용자 정의 클래스는 가나 할 수있는 수행 정수를 갖다 댔으나하게 당신의 다른 그것의 뷰 또는 형제 자매가 해당 태그를이 없다는

+0

downvoting 중에도 의견을 추가하십시오. 그렇지 않은 경우 사용자가 무엇을 잘못 이해했는지 – Johnykutty

+0

UIScollView가 컨트롤러가 아니기 때문에보기 컨트롤러 클래스를 UIScrollView로 변경하는 것은 불가능합니다. 이제 스토리 보드의 viewController에 scrollview를 연결하면 오류가 발생합니다. 또한 뷰 자체를 의미하는 경우 항상 계층 구조 맨 위에 UIView가 있어야합니다. 태그를 사용하면 스토리 보드에서 뷰를 참조하는 올바른 방법이 아니며, 이제는 scrollView에 천 개의 뷰를 넣으면 태그를 사용하는 완벽한 시간입니다. – BooRanger

+0

@BooRanger 죄송합니다, 컨트롤러의 뷰 클래스입니다. – Johnykutty