#iphone #ios #ipad #uiimageview #uibutton
#iPhone #iOS #iPad #uiimageview #uibutton
Вопрос:
Я использую проект PhotoScroller и хочу создавать кнопки поверх изображений программно. ImageView является подвидом ScrollerView. Мой фрагмент кода показан ниже:
imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image
//imageView.tag = i; // tag our images for later use when we place them in serial form
[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact
imageView.userInteractionEnabled = YES; //to enable touch interaction with image
[self addSubview:imageView];
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon button
btn.frame = CGRectMake(215, 550, 100, 100);
[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working
[self addSubview:btn]; //Buttons are clickable but shows button on all images**
//[imageView addSubview:btn]; //Buttons are not clickable and are shown on all images
Теперь у меня есть два варианта. Делаю ли я свою кнопку подвидом ImageView или ScrollView, который является родительским для ImageView. Если я создам подраздел кнопки Scrollview, например [self addSubview:btn]; он отображается в правильном положении и доступен для просмотра, но проблема в том, что он создается на всех изображениях в очереди, потому что я делаю его подразделом родительского представления, т.е. scrollview . Иначе, если я сделаю это подвидом дочернего представления, т.Е. ImageView, который уникален для каждого изображения, но все равно отображается на всех изображениях и не доступен для просмотра :/
Может ли any1 подсказать мне, как сделать его интерактивным и сохранить связь между динамической кнопкой и уникальным изображением, чтобы у меня были разные кнопки в разных положениях на каждом изображении в очереди.
Заранее спасибо.
С уважением,
вахиб
Ответ №1:
Вам необходимо создать дополнительный UIView, содержащий как UIImageView, так и UIButton
UIView* imageContainer = [[UIView alloc] initWithFrame:CGRectMake(0,0,1000,1000)] autorelease];
UIImageView* imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact
imageView.userInteractionEnabled = YES; //to enable touch interaction with image
[imageContainer addSubview:imageView];
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon button
btn.frame = CGRectMake(215, 550, 100, 100);
[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working
[imageContainer addSubview:btn];
[self addSubview:imageContainer];
Осторожно с утечкой памяти. В вашем коде много неиспользуемого содержимого.