Я изменил пример Apple Scrolling, чтобы захватить серию изображений, созданных из файлов, на которые ссылаются объекты CoreData
. Я могу добавить изображения в порядке, но я также хочу программно добавить UIButton
к каждому изображению. Количество изображений зависит от количества объектов CoreData
, поэтому я не могу использовать IB.Программно добавляя UIButtons и UIImages к UIScrollview
Может ли кто-нибудь мне помочь, как бы я лучше всего это реализовал?
Вот код, который захватывает изображения из CoreData
магазина:
NSUInteger i;
for (i = 1; i <= kNumImages; i++)
{
Sentence *testSentence = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:i];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *imageName = [[paths objectAtIndex:0] stringByAppendingPathComponent:[testSentence image]];
NSLog(@"imageName: %@", imageName);
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imageName];
NSLog(@"image: %@", image);
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
NSLog(@"imageView: %@", imageView);
[imageView setContentMode:UIViewContentModeScaleAspectFit];
[imageView setBackgroundColor:[UIColor blackColor]];
// 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];
[image release];
[imageView release];
}
[self layoutScrollImages]; // now place the photos in serial layout within the scrollview
А вот код, который устанавливает изображения из в Scrollview:
- (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)];
}
Спасибо за ваш ответ. Yup, который работает, но я не могу нажать на кнопку (он неуклонно игнорирует мои клики/нажатия), да, я изменил действие), и я хочу, чтобы кнопка была не того же размера, что и imageView.frame. Есть идеи? – glenstorey
Вы, вероятно, имеете в виду 'aButton.frame = imageView.bounds', хотя в этом случае я не думаю, что это имеет большое значение. Вам также может потребоваться установить imageView.userInteractionEnabled = YES (по умолчанию NO для UIImageView, IIRC). –
Сортировка размера кнопки/изображения рамки - но я не могу заставить его щелкнуть. Я пробовал: [aButton setUserInteractionEnabled: YES]; [aButton setEnabled: YES]; [aButton setAlpha: 1]; , и я не могу ничего сделать. Есть ли способ отладить то, что вы нажимаете? Какие-нибудь стратегии для работы? – glenstorey