Я хочу сделать в своем приложении горизонтальную подкачку. У меня большой текст, который помещен в UITextView, но я хочу сделать горизонтальное перелистывание, как iBooks или bookmate. У вас есть какое-нибудь решение или идея?
Горизонтальное перелистывание в моем приложении
Ответы (4)
Обратите внимание на новый (iOS 5) класс UIPageViewController
. Для эффекта загибания страницы iBooks попробуйте использовать
[controller initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
Затем вы можете установить контроллеры представления, используя setViewControllers:direction:animated:completion:
. Дополнительные сведения об этом классе см. В справочнике по классу UIPageViewController..
Используйте этот удобный класс 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"
).
Я использовал этот класс в ряде проектов, и он неплохо работает.
UIScrollView с включенной pageEnabled?
Вы можете использовать UIWebView (подкласс UIScrollView) для горизонтального разбиения на страницы.
Чтобы он работал, вам нужно разделить NSString, который вы используете для хранения текста, в зависимости от размера (и высоты) вашего веб-представления.
Сохраните разделенный NSString в массиве NSArray, а затем, в зависимости от смахивания пользователя, загрузите правильную «страницу» (индекс массива) и отобразите с анимацией.
Надеюсь, это поможет.