iOS. Приемы программирования - страница 62
self.myScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
Рис. 1.63. Черные индикаторы, появляющиеся справа и снизу прокручиваемого вида
Одна из наиболее замечательных особенностей прокручиваемых видов заключается в том, что в них возможна разбивка на страницы. Она функционально подобна прокрутке, но прокрутка прекращается, как только пользователь переходит на следующую страницу. Вероятно, вы уже знакомы с этой функцией, если вам доводилось пользоваться программой Photos (Фотографии) в iPhone или iPad. Просматривая фотографии, можно перемещаться между ними скольжением. Каждое скольжение открывает на экране предыдущую или последующую фотографию. При одном скольжении вы никогда не прокручиваете последовательность до самого начала или до самого конца. Когда начинается прокручивание и вид обнаруживает следующее изображение, прокрутка останавливается на этом изображении и оно начинает подрагивать на экране. Таким образом, анимация прокрутки прерывается. Это и есть разбивка на страницы. Если вы еще не пробовали ее на практике, настоятельно рекомендую попробовать. Весь дальнейший рассказ останется непонятен, если вы не будете представлять, как выглядит приложение, поддерживающее разбивку на страницы.
В следующем примере с кодом я использую три изображения: iPhone, iPad и MacBook Air. Каждое из них я поместил в отдельный вид типа image view, а потом добавил эти виды к прокручиваемому виду. Затем включаем разбивку на страницы, задавая для свойства pagingEnabled прокручиваемого вида значение YES:
>– (UIImageView *) newImageViewWithImage:(UIImage *)paramImage
>frame:(CGRect)paramFrame{
>UIImageView *result = [[UIImageView alloc] initWithFrame: paramFrame];
>result.contentMode = UIViewContentModeScaleAspectFit;
>result.image = paramImage;
>return result;
>}
>– (void)viewDidLoad{
>[super viewDidLoad];
>UIImage *iPhone = [UIImage imageNamed:@"iPhone"];
>UIImage *iPad = [UIImage imageNamed:@"iPad"];
>UIImage *macBookAir = [UIImage imageNamed:@"MacBookAir"];
>CGRect scrollViewRect = self.view.bounds;
>self.myScrollView = [[UIScrollView alloc] initWithFrame: scrollViewRect];
>self.myScrollView.pagingEnabled = YES;
>self.myScrollView.contentSize = CGSizeMake(scrollViewRect.size.width *
>3.0f, scrollViewRect.size.height);
>[self.view addSubview: self.myScrollView];
>CGRect imageViewRect = self.view.bounds;
>UIImageView *iPhoneImageView = [self newImageViewWithImage: iPhone
>frame: imageViewRect];
>[self.myScrollView addSubview: iPhoneImageView];
>/* Для перехода на следующую страницу изменяем положение
>следующего вида с изображением по оси X. */
>imageViewRect.origin.x += imageViewRect.size.width;
>UIImageView *iPadImageView = [self newImageViewWithImage: iPad
>frame: imageViewRect];
>[self.myScrollView addSubview: iPadImageView];
>/* Для перехода на следующую страницу изменяем положение
>следующего вида с изображением по оси X. */
>imageViewRect.origin.x += imageViewRect.size.width;
>UIImageView *macBookAirImageView =
>[self newImageViewWithImage: macBookAir
>frame: imageViewRect];
>[self.myScrollView addSubview: macBookAirImageView];
>}
Итак, теперь у нас есть три страницы, содержимое которых можно прокручивать (рис. 1.64).
Рис. 1.64. Прокрутка содержимого в виде, в котором поддерживается разбивка на страницы
1.24. Загрузка веб-страниц с помощью UIWebView
Постановка задачи
Необходимо динамически загрузить веб-страницу прямо в ваше приложение для iOS.