프레임이 부모 프레임으로 자동 변경되도록 ChildViewController보기에 문제가 있습니다. 어떻게 진행되는지를 설명하기 위해 하나의 클래스로 예제 프로젝트를 만들어 보았습니다. 간단히 말해서 프레임을 잘못 변경하는 UIScrollView Subview 컨테이너
, I : - 나는 프레임 컨테이너에 UIView를 만들 수있는 viewDidLoad을 에서- 는 ScrollViewController는
- RootViewController로 ScrollViewController을 추가하고 ScrollViewController에서 창
- 에 추가해야 {{0, 0}, {72704, 768}}
- 프레임이 {0, 0}, {1024, 768} 인 UIScrollView 만들기
- ScrollViewController보기
- 에있는 ScrollView는
- 이의 프레임 (71) UIViewControllers 만들기있는 ScrollView에 컨테이너를 추가 {{0, 0}, {1024, 768}}
- ScrollViewController
- 의 ChildViewControllers로 추가 ViewDidAppear
- 각 프레임은에 컨테이너
- 로그에 모두 71 개 프레임을 자신의 하위 뷰를 추가 {{0, 0}, {72704, 768}} 금지 - 나는 세트를 1024 x 768.
모든 자동 크기 조정 마스크/하위보기가 아니오로 설정됩니다.
이것은 iOS 6에서 실행 중이지만 iOS 5.1에서도 발생합니다!
업데이트! addChildViewController가 어떻게 든 발생합니다. 이유는 확실하지 않습니다 -이 예상되는 동작입니까? 자신의 뷰 프레임을 부모에게 자동으로 확장하지 않고도이 childViewController를 ScrollViewController에 추가 할 수 있어야합니다. 이론적으로 이것을하는 방법이 아닌가?
기타 - NIB는 어디에도 없습니다. Scrollview/ContainerView와 71 개의 VC 뷰 각각에서 "translatesAutoresizingMaskIntoConstraints"를 NO로 설정하십시오. 같은 일, 불행히도. 이
링크 프로젝트에 ... 아주 이상한 행동처럼 보인다 - ScrollViewController FROM https://dl.dropbox.com/u/637000/TestingBug.zip
CODE :
- (void)viewDidLoad
{
[super viewDidLoad];
[self initScrollView];
[self createTestViews];
}
- (void)initScrollView {
if(scrollView == nil) {
containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 72704, 768)];
containerView.autoresizingMask = UIViewAutoresizingNone;
containerView.autoresizesSubviews = NO;
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
scrollView.autoresizingMask = UIViewAutoresizingNone;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.autoresizesSubviews = NO;
scrollView.delegate = self;
[self.view addSubview:scrollView];
[scrollView addSubview:containerView];
}
}
- (void)createTestViews {
for(int count = 0; count < 71; count++) {
[self createTestView];
}
}
- (void)createTestView {
UIViewController *testVC = [[UIViewController alloc] init];
testVC.view.frame = CGRectMake(0, 0, 1024, 768);
[self addChildViewController:testVC];
[containerView addSubview:testVC.view];
[testVC didMoveToParentViewController:self];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
for(UIView *subview in containerView.subviews) {
// THIS IS {{0, 0}, {72704, 768}} NOT 1024 x 768
NSLog(@"BROKEN FRAME = %@", NSStringFromCGRect(subview.frame));
}
}
그냥 필요한 것! – chrs