Poziomy UIScrollView i setki miniaturek w systemie iOS?

Muszę utworzyć poziomy UIScrollView, który pomieści setki miniaturek, tak jak slajd miniaturek.

Na przykład na jednym ekranie będzie wyświetlanych 10 miniaturek, z których każda sąsiaduje poziomo.

Mój problem polega na tym, że nie wiem, jak zrobić poziomy UIScrollView, aby trzymać wiele miniaturek, które wyświetlają się w tym samym czasie ?

Przykładowe zdjęcie jest jak poniżej. Zobacz dolną część ekran.

Tutaj wpisz opis obrazka

Dzięki.
Author: user403015, 2011-05-12

5 answers

Możesz dodać wszystkie miniatury programowo do widoku przewijania i użyć metody setContentSize UIScrollView. musisz przekazać 2 wartości w contentOffset. 1 dla szerokości i 1 dla wysokości. Kliknij link , aby dowiedzieć się więcej na ten temat. Jeśli potrzebujesz dalszej pomocy, zostaw komentarz.

Mam nadzieję, że to pomoże.

Proszę rozważyć następujący przykład.

- (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)];
}

 37
Author: Janak Nirmal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-26 11:15:00

Proponuję spojrzeć na nimbus

 4
Author: xonegirlz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-16 04:38:33

Zobacz projekt bjhomer hsimagesidebarview. Umożliwia ładowanie widoku przewijania w poziomie lub w pionie i ładowanie obrazów. Bardzo łatwy do wdrożenia.

 4
Author: dnstevenson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-17 04:32:22

Po pierwsze, w storyboard przeciągnij i upuść widok przewijania i stwórz wylot scrollview o nazwie scrollView. Dwie tablice jeden to mutable i jeden to immutable.

@property(nonatomic,strong)IBOutlet UIScrollView *scrollView;
@property(nonatomic,strong)NSMutableArray *images;
@property(nonatomic,strong)NSArray *imagesName;

Tablica immutable przechowuje tylko obrazy, które chcemy pokazać w widoku przewijania.Upewnij się, że UIscrollview delegat jest zdefiniowany. W pliku {[9] } w funkcji didload wykonaj następujący kod:

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;
}
 2
Author: Sarishti batta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-02 17:39:15

Możesz obliczyć rozmiar zawartości szerokość widoku przewijania jako szerokość = liczba obrazów * rozmiar każdego obrazu. Następnie Ustaw contentSize widoku przewijania na tę szerokość i żądaną wysokość (scrollView.contentSize = CGSizeMake(width, height))

 0
Author: Srikar Appalaraju,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 01:01:43