2013-08-05 6 views
2

У меня есть UIScrollView, который содержит два подзаголовка, каждый из которых является точно размером экрана устройства. Я установил размер взглядов ребенка в моем AppDelegate:Настройка границ на UIScrollView

CGRect screenRect = [[self window] bounds]; 
[[myViewController1 view] setFrame:screenRect]; 
screenRect.origin.x = screenRect.size.width; 
[[myViewController2 view] setFrame:screenRect]; 

Я затем добавить эти взгляды на UIScrollView и установить UIScrollView-х contentSize быть в два раза больше ширины экрана:

CGRect containerRect = CGRectMake(0, 0, screenRect.size.width * 2, screenRect.size.height); 
UIScrollView *sv = (UIScrollView *)[myRootViewController view]; 
[sv addSubview:[myViewController1 view]]; 
[sv addSubview:[myViewController2 view]]; 
[sv setFrame:[[self window] bounds]]; 
[sv setContentSize:containerRect.size]; 

Когда приложение работает, я вижу взгляды бок о бок, как и ожидалось. Однако оба представления намного шире ширины экрана. Кроме того, UIScrollView не ограничивает вертикальную прокрутку, которую я ожидаю, так как ее высота равна высоте экрана.

Как я могу заставить UIScrollView ограничивать вертикальную прокрутку и принудительно отображать его дочерние элементы в рамке соответствующего размера?

+0

Вы не установили рамку scrollviews только это размер содержимого – Eyeball

+0

@Eyeball: Я на самом деле установить кадр раньше, я просто забыл добавить, что здесь. Я отредактировал мой вопрос, спасибо. –

+0

Является ли rootviewcontroller инфильтрацией scrollview? Создается ли он программно или через IB? – Eyeball

ответ

2

Вы зарегистрировали свои [[само окно] границы]? Возможно, он включает в себя панель состояния, что сделает ваши просмотры контента 20pts слишком высокими (что позволяет использовать вертикальную прокрутку). Возможно:

CGRect screenFrame = [[UIScreen mainScreen] applicationFrame]; 
myViewController1.view.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(screenFrame), CGRectGetHeight(screenFrame)); 
myViewController2.view.frame = CGRectOffset(myViewController1.view.frame, CGRectGetWidth(screenFrame), 0.0); 

И потом:

CGRect contentRect = CGRectMake(0, 0, CGRectGetWidth(screenFrame), CGRectGetHeight(screenFrame)); 
UIScrollView *sv = (UIScrollView *)myRootViewController.view; 
[sv addSubview:myViewController1.view]; 
[sv addSubview:myViewController2.view]; 
[sv setContentSize:contentRect.size]; 
+0

Спасибо, это привело меня в правильном направлении. –

Смежные вопросы