Горизонтальный UIScrollView и сотни миниатюр в iOS?
Мне нужно создать горизонтальный UIScrollView, который будет содержать сотни миниатюр, как слайд миниатюр.
Например, на одном экране будет отображаться 10 эскизов, каждый из которых расположен горизонтально друг с другом.
Моя проблема в том, что я не знаю, как сделать горизонтальный UIScrollView для хранения нескольких эскизов, которые отображаются одновременно?
Пример фотографии приведен ниже. См. Нижнюю часть экрана.
![enter image description here]()
Спасибо.
Ответы
Ответ 1
Вы можете добавить все миниатюры программно в свой scrollview и использовать метод setContentSize для UIScrollView. вы должны передать 2 значения в contentOffset. 1 для ширины и 1 для высоты. Следуйте ссылке, чтобы узнать больше об этом. Если вам нужна дополнительная помощь, оставьте комментарий.
Надеюсь, что это поможет.
Обратите внимание на следующий пример.
- (void)setupHorizontalScrollView
{
scrollView.delegate = self;
[self.scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setCanCancelContentTouches:NO];
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scrollView.clipsToBounds = NO;
scrollView.scrollEnabled = YES;
scrollView.pagingEnabled = YES;
NSUInteger nimages = 0;
NSInteger tot=0;
CGFloat cx = 0;
for (; ; nimages++) {
NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", (nimages + 1)];
UIImage *image = [UIImage imageNamed:imageName];
if (tot==15) {
break;
}
if (4==nimages) {
nimages=0;
}
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
CGRect rect = imageView.frame;
rect.size.height = 40;
rect.size.width = 40;
rect.origin.x = cx;
rect.origin.y = 0;
imageView.frame = rect;
[scrollView addSubview:imageView];
[imageView release];
cx += imageView.frame.size.width+5;
tot++;
}
self.pageControl.numberOfPages = nimages;
[scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)];
}
Ответ 2
Отъезд bjhomer HSImageSidebarView. Он позволяет загружать scrollview горизонтально или вертикально и загружать изображения. Супер легко реализовать.
Ответ 3
Я предлагаю вам посмотреть nimbus
Ответ 4
Прежде всего, в storyboard
перетащите прокрутку и сделайте выход scrollview
с именем scrollview
. Два массива - это mutable
, а один - immutable
.
@property(nonatomic,strong)IBOutlet UIScrollView *scrollView;
@property(nonatomic,strong)NSMutableArray *images;
@property(nonatomic,strong)NSArray *imagesName;
Массив immutable
сохраняет только изображения, которые мы хотим показать в прокрутке. Убедитесь, что делегат UIscrollview
определен.
В viewcontoller.m
файле в didload
выполните следующий код:
imagesName = [[NSArray alloc]initWithObjects:@"centipede.jpg",@"ladybug.jpg",@"potatoBug.jpg",@"wolfSpider.jpg", @"ladybug.jpg",@"potatoBug.jpg",@"centipede.jpg",@"wolfSpider.jpg",nil];
// mutable array used to show the images on scrollview dynamic becaus after one
// image when scroll other will come
images = [[NSMutableArray alloc]init];
scrollView.delegate = self;
scrollView.scrollEnabled = YES;
int scrollWidth = 120;
scrollView.contentSize = CGSizeMake(scrollWidth,80);
int xOffset = 0;
//the loop go till all images will load
for(int index=0; index < [imagesName count]; index++)
{
UIImageView *img = [[UIImageView alloc] init];
// make the imageview object because in scrollview we need image
img.frame = CGRectMake(5+xOffset, 0, 160, 110);
// the offset represent the values, used so that topleft for each image will
// change with(5+xOffset, 0)and the bottomright(160, 110)
NSLog(@"image: %@",[imagesName objectAtIndex:index]);
img.image = [UIImage imageNamed:[imagesName objectAtIndex:index]];
// The image will put on the img object
[images insertObject:img atIndex:index];
// Put the img object at the images array which is mutable array
scrollView.contentSize = CGSizeMake(scrollWidth+xOffset,110);
//scroll view size show after 125 width the scroll view enabled
[scrollView addSubview:[images objectAtIndex:index]];
// set images on scroll view
xOffset += 170;
}
Ответ 5
Вы можете рассчитать ширину размера содержимого прокрутки в виде width = количество изображений * размер каждого изображения. Затем установите contentSize прокрутки в эту ширину и высоту, которую вы хотите (scrollView.contentSize = CGSizeMake(width, height))