Как масштабировать мои подпредставления в UIScrollView одновременно? - PullRequest
1 голос
/ 19 ноября 2011

По сути, моя иерархия представлений выглядит следующим образом:

UIWindow (level 1)
   |--UIScrollView (level 2)
           |--single UIView (level 3)
                |-- Multiple subviews (level 4)

Когда пользователь нажимает на одно подпредставление на уровне 4, приложение будет

  1. масштабируйте все подпредставления на уровне 4 до размера (1024, 748), то есть полностью заполняйте весь экран iPad, мое приложение всегда работает в ландшафтном режиме.
  2. отображает подпредставление (уровень 4), к которому пользователь прижимает текущее содержимое.

Я пытаюсь добавить приведенный ниже код в процедуру обработки жестов, чтобы увеличить UIView, это не сработало, оно только увеличило фрейм UIView, но подпредставления уровня 4 вообще не масштабируются.

причина, по которой я добавляю UIView уровня 3, заключается в том, что я хочу, чтобы все подпредставления уровня 4 автоматически масштабировались при масштабировании UIView уровня 3, поэтому мне не нужно масштабировать эти подпредставления один за другим. Теперь я растерялся, может ли это работать? или мне нужно масштабировать все подпредставления уровня 4 по одному вручную?

- (IBAction)handlePinchTap:(UIPinchGestureRecognizer *)gestureRecognizer {

NSLog(@"handle tap");
CGRect oldFrame = self.levelThreeUIView.frame;

[UIView animateWithDuration:1.0 animations:^{

    self.levelThreeUIView.frame = CGRectMake(0, 0, oldFrame.size.width, 748);


}];
}

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

немного поздно ... но на тот случай, если кто-нибудь еще наткнется на это ...

вам не нужно изменять размер представления третьего уровня. вместо этого вы должны установить для contentSize UIScrollView размер представления третьего уровня,

self.scrollView.contentSize = self.levelThreeUIView.frame.size;

установить делегат вида прокрутки на ваш контроллер

self.scrollView.delegate = self

и поставить

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.levelThreeUIView;
}

содержимое будет автоматически масштабироваться, когда пользователь ущипнет

обратите внимание, что кадры каждого подпредставления не меняются, только масштаб, на котором они отображаются

1 голос
/ 19 ноября 2011

Один из способов решить эту проблему - установить свойство autoResizing для каждого из ваших подпредставлений. Это в основном изменяет размеры подпредставлений, если размер родительского представления изменяется. Самый простой способ установить это свойство - перейти к Интерфейсному Разработчику, выбрать вид и сделать это -

enter image description here

Вы видите поле Autosizing справа, для каждого из подпредставлений выберите все четыре и внутренние параметры автоматического изменения размера. справа, т.е. в примере, Xcode показывает вам, как будет изменяться размер представления в зависимости от ваших настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...