2011-09-07 4 views
3

나는이 scrollView와 함께 initWithFrame을 사용하는 진정한 의미가 무엇인지 궁금해했다. 그 이유는 우리가 scrollView의 크기를 설정했기 때문이며 scrollView를 뷰의 서브 뷰로 추가하기 때문이다.initWithFrame with self.view.frame : 필요한가요?

왜이 initWithFrame을 지정해야합니까? 프레임이

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame]; 

scrollView.contentSize = CGSizeMake(847, 1129); 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 
[scrollView addSubview:imageView]; 
[self.view addSubview:scrollView]; 

감사 self.view.frame은 (우리가 다른 사각형과 같은 0,0 50,50 설정하면 내가 더 잘 이해하는 것) 때 사실은 정말 이해가 안

+4

'frame'이 아니라'self.view.bounds'에서 전달되는 initWithFrame을 호출해야합니다. – progrmr

+1

사실, self.view.frame의 원점이 0이 아니라면 스크롤 뷰는 같은 ​​양만큼 오프셋됩니다. 아마도 원하는 것과 다를 수 있습니다. 부모보기를 채우는 하위 프레임은 parentView.bounds로 설정된 프레임을 가져야합니다. –

+0

@Mike Weller : 좋습니다, 감사합니다. 항상 initWithFrame을 uiimageView 또는 uiscrollView로 지정해야합니까? 나는 "자식"이 부모 경계를 알고 있다고 가정하기 때문에 약간 혼란 스럽습니다. 편집 : 또한 어떤 경우에 우리는 0이 아닌 원점을 가진 프레임을 봅니까? – Paul

답변

2
이 경우

self.view은 스크롤보기가 포함 된보기이므로 self.view.frame으로 설정하면 스크롤보기가 전체보기를 채 웁니다. 프레임과 내용 크기는 다른 것들 - scrollview 프레임은 scrollview의 보이는 부분을 정의하고, content size는 scrollview 내부의 스크롤 가능한 (줌 가능한) 내용의 크기를 정의합니다.

+0

덕분에, 예, 나는 contentsize를 이해했습니다. 따라서 상단에 툴바를 설정하면 scrollview는 self.view.frame을 설정하여 숨길 것입니다. ("전체보기 채우기") 나는 self.view.bounds 또는 .frame과 약간 혼동되며 왜 사용해야하는지 설명합니다. Thanks again again – Paul

+0

툴바/navbar/tabbar가 계층 구조의 상위 컨트롤러에 표시되면 no, scrollview (또는 현재 뷰의 다른 하위 뷰)는 현재 뷰가 모든 막대가 표시된 후에 남은 것으로 줄어들 기 때문에 숨기지 않습니다. bounds와 frames에 관해서는'initWithFrame :'이라면 부모 뷰의 프레임 인 self.view.frame을 사용하라. 또는 Interface Builder에서 시각적으로 인터페이스를 생성 할 수 있습니다 (비 동적 인터페이스의 경우 선호). –

+0

괜찮습니다. – Paul

관련 문제