Горизонтальное перелистывание в моем приложении

Я хочу сделать в своем приложении горизонтальную подкачку. У меня большой текст, который помещен в UITextView, но я хочу сделать горизонтальное перелистывание, как iBooks или bookmate. У вас есть какое-нибудь решение или идея?


person werbary    schedule 18.11.2011    source источник


Ответы (4)


Обратите внимание на новый (iOS 5) класс UIPageViewController. Для эффекта загибания страницы iBooks попробуйте использовать

[controller initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl 
              navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal 
                            options:nil];

Затем вы можете установить контроллеры представления, используя setViewControllers:direction:animated:completion:. Дополнительные сведения об этом классе см. В справочнике по классу UIPageViewController..

person aopsfan    schedule 18.11.2011

Используйте этот удобный класс PagedView, который также управляет просмотром прокрутки страниц. как просмотр загрузки / разгрузки и повторное использование для вас.

Вы должны реализовать два метода делегата, чтобы он заработал:

- (NSUInteger)numberOfPagesInPagedView:(PagedView *)view;
- (UIView *)pagedView:(PagedView *)view viewForPageAtIndex:(NSUInteger)page;

Они будут вам знакомы, если вы когда-либо использовали UITableView. В numberOfPagesInPagedView: вам просто нужно вернуть количество страниц, которые вы хотите отобразить.

- (NSUInteger)numberOfPagesInPagedView:(PagedView *)view
{
    // return the number of pages in the paging view
    return 10;
}

В pagedView:viewForPageAtIndex: вы должны вернуть представление для определенного индекса страницы. Вы можете повторно использовать представления, отправив сообщение dequeueReusableViewWithIdentifier: страничному представлению.

- (UIView *)pagedView:(PagedView *)pagedView viewForPageAtIndex:(NSUInteger)page
{
    static NSString *reuseIdentifier = @"PageIdentifier";
    UIView *view = [pagedView dequeueReusableViewWithIdentifier:reuseIdentifier];
    if(view == nil) {
        view = [[[MyPageView alloc] initWithFrame:view.bounds] autorelease];
    }

    // add contents specific to this page index to the view

    return view;
}

Чтобы повторно использовать представление, ваш подкласс UIView (MyPageView) должен соответствовать протоколу ReusableObject и реализовывать reuseIdentifier (в этом случае вы должны вернуть @"PageIdentifier").

Я использовал этот класс в ряде проектов, и он неплохо работает.

person pt2ph8    schedule 18.11.2011

UIScrollView с включенной pageEnabled?

person DBD    schedule 18.11.2011

Вы можете использовать UIWebView (подкласс UIScrollView) для горизонтального разбиения на страницы.

Чтобы он работал, вам нужно разделить NSString, который вы используете для хранения текста, в зависимости от размера (и высоты) вашего веб-представления.

Сохраните разделенный NSString в массиве NSArray, а затем, в зависимости от смахивания пользователя, загрузите правильную «страницу» (индекс массива) и отобразите с анимацией.

Надеюсь, это поможет.

person greenhorn    schedule 18.11.2011