Анимация просмотра и выключения экрана в iOS - PullRequest
2 голосов
/ 14 декабря 2011

Я пытаюсь создать список данных, отображаемых для пользователя. Когда они щелкают по следующей или предыдущей кнопке или смахивают на просмотр прокрутки, вид должен переходить за пределы экрана слева направо или справа налево в зависимости от того, какую кнопку нажимают или в каком направлении пролистывают. У меня это работает, за исключением того, что вид скользит по всему экрану (то есть он скользит поверх кнопок).

Вот код для перехода. Мой вид прокрутки - просто старый вид, но он находится в середине страницы, его координаты (40,54,240,311), поэтому я хотел бы, чтобы он исчез в 280 и снова появился в 40. Как я уже сказал, он в настоящее время попадает на экран в 0 и выход из экрана в 320 (в обычном портретном режиме).

//Animate the scrollview across the screen
CATransition* animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[self.scrollView layer] addAnimation:animation forKey:nil];

Мне бы очень хотелось, чтобы это работало как приложение Kindle на iPhone, где пользователь может перетащить вид влево или вправо, чтобы показать следующую страницу. Я рассмотрел, возможно, сделать его прокруткой. Таким образом, приведенный выше код перемещает мое представление прокрутки по экрану, и внутри моего прокрутки у меня просто есть метка и изображение, которое я установил.

//set the content of the screen
self.imageView.image = [UIImage imageNamed: @"image1.png"];
self.labelNumber.text = @"1";
self.labelText.text = @"Test";

Несколько первоначальных идей, которые у меня есть, заключаются в том, что мне нужно два вида прокрутки, и мне нужно переключаться между ними, или я должен сделать один действительно широкий вид прокрутки и иметь данные для следующего или предыдущего факта слева или справа. Но оба они кажутся плохими, потому что мне нужно иметь на экране кучу дублирующих элементов управления, розеток и т. Д.

PS Это мой первый пост на этом сайте. Woot.

1 Ответ

1 голос
/ 01 марта 2012

Вам необходимо создать новый пустой UIView, который будет превосходным видом вашего вида с прокруткой и того же размера, что и вид с прокруткой. Затем вам нужно вызвать clipsToBounds: YES для этого нового супер просмотра.

Что-то вроде:

UIView *blankView = [[UIView alloc] initWithFrame:CGRectMake(40, 54, 240, 311)];
[newView setClipsToBounds:YES];
[scrollViewsParentView addSubview:blankView]

UIScrollView *yourScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 54, 311)];
[blankView addSubview:yourScrollView];

Обратите внимание на изменение координат для "yourScrollView"? Это потому, что его родитель теперь пустое представление.

Кроме того, я сделал вашу точную идею использования двух UIScrollViews, чтобы показать переход между ними. У вас есть на экране (показывает) UIScrollView и вне экрана (не показывает) UIScrollView, а затем сделать анимацию, чтобы показать переход. В этом случае они будут иметь одного и того же родителя (blankView).

Вы также можете проверить эти методы UIView:

animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:

Надеюсь, это ответит на ваш вопрос.

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