Горизонтальный пейджинг в моем приложении - PullRequest
0 голосов
/ 18 ноября 2011

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

Ответы [ 4 ]

1 голос
/ 18 ноября 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").

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

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

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

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

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

0 голосов
/ 18 ноября 2011

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

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

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

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

0 голосов
/ 18 ноября 2011

UIScrollView с включенной функцией pageEnabled?

...