Подтвердить что ты не робот

Горизонтальный UIScrollView и сотни миниатюр в iOS?

Мне нужно создать горизонтальный UIScrollView, который будет содержать сотни миниатюр, как слайд миниатюр.

Например, на одном экране будет отображаться 10 эскизов, каждый из которых расположен горизонтально друг с другом.

Моя проблема в том, что я не знаю, как сделать горизонтальный UIScrollView для хранения нескольких эскизов, которые отображаются одновременно?

Пример фотографии приведен ниже. См. Нижнюю часть экрана.

enter image description here

Спасибо.

4b9b3361

Ответ 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))