Я пытаюсь изучить UIScrollview, используя документы Apple и их пример кода http://developer.apple.com/iphone/library/samplecode/Scrolling/index.html, но что-то настолько простое ускользает от меня.
Как вы скажете, какое изображение в данный момент находится на экране, чтобы, если бы я выбрал одно из изображений в режиме горизонтальной прокрутки, как бы я получил имя файла изображения или даже указатель в массиве, чтобы затем сделать что-то еще с изображением.
Я подумал, что с включенным Page Control я смогу найти страницу # и сопоставить ее с изображением. Я думал о подсчете замедления для подсчета страниц, но недостаточно полный щелчок увеличит его и даст ложное число.
Последнее, о чем я мог подумать, это получить contentOffSet и разделить на размер изображения, который даст 1, 2, 3, и я мог бы указать на массив (слишком устал, чтобы попробовать сегодня вечером ... подумал, что могу спросить до тратить гораздо больше времени ;-)).
Есть еще идеи? Я думал, что это будет метод где-то, что они используют в приложении фотоальбом.
Спасибо за вашу помощь! Может быть, я просто не понимаю их код.
Пол
PS: вот код:
- (void)layoutScrollImages
{
UIImageView * view = nil;
NSArray * subviews = [scrollView1 subviews];
// reposition all image subviews in a horizontal serial fashion
CGFloat curXLoc = 0;
for (view in subviews)
{
if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
{
CGRect frame = view.frame;
frame.origin = CGPointMake(curXLoc, 0);
view.frame = frame;
curXLoc += (kScrollObjWidth);
}
}
// set the content size so it can be scrollable
[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)];
}
(аннулируются) viewDidLoad
{
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
// 1. настроить scrollview для нескольких изображений и добавить его в контроллер вида
//
// примечание: следующее можно сделать в Интерфейсном Разработчике, но мы покажем это в коде для ясности
[scrollView1 setBackgroundColor: [UIColor blackColor]];
[scrollView1 setCanCancelContentTouches: NO];
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scrollView1.clipsToBounds = YES; // по умолчанию NO, мы хотим ограничить рисование в нашем scrollview
scrollView1.scrollEnabled = YES;
// свойство pagingEnabled по умолчанию НЕТ, если установлено, скроллер будет останавливаться или привязываться к каждой фотографии
// если вам нужна свободная прокрутка, не устанавливайте это свойство.
scrollView1.pagingEnabled = YES;
// загрузить все изображения из нашего комплекта и добавить их в представление прокрутки
// NSUInteger i;
для (i = 1; i <= kNumImages; i ++)
{
NSString * imageName = [NSString stringWithFormat: @ "Card% d.png", i];
UIImage * image = [UIImage imageNamed: imageName];
UIImageView * imageView = [[UIImageView alloc] initWithImage: image]; </p>
// setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
CGRect rect = imageView.frame;
rect.size.height = kScrollObjHeight;
rect.size.width = kScrollObjWidth;
imageView.frame = rect;
imageView.tag = i; // tag our images for later use when we place them in serial fashion
[scrollView1 addSubview:imageView];
[imageView release];
}
[self layoutScrollImages]; // теперь размещаем фотографии в серийном макете внутри прокрутки