UIScrollview问题

时间:2012-05-11 16:02:01

标签: objective-c ios5

我正在尝试使用小图片实现uiscrollview。

  1. 我需要uiscrollview滚动完成后,每一端的最后一张图像都保留在中央,一边是空的。滚动完成后,最后一张图像保留在两侧。

  2. 我需要知道哪个图像位于scollview的中心,在其上应用阴影,

    jugadorSlide.pagingEnabled = YES;
    NSError *error = nil;
    fotosJugadores = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: @"/Users/exular/Developer/GBC/exular/GBC/Caras/" error: &error];
    
    NSInteger numberOfViews = [fotosJugadores count];
    for (int i = 0; i < numberOfViews; i++) {
    
        UIImage *myImage = [UIImage imageNamed:[fotosJugadores objectAtIndex:i]];
        CGFloat yOrigin = i * myImage.size.width;
        UIImageView *awesomeView = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, myImage.size.width, myImage.size.height)];
        awesomeView.alpha = 0.5;
        awesomeView.image = myImage;
        [self.jugadorSlide addSubview:awesomeView];
        awesomeView=nil;
    }
    jugadorSlide .contentSize = CGSizeMake(65 * numberOfViews,78);
    jugadorSlide.layer.cornerRadius = 11;
    jugadorSlide.layer.masksToBounds = YES;
    
  3. 非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

要允许第一个和最后一个图像位于中心,只需在第一个图像之前和最后一个图像之后添加一个空白区域。换句话说:在yOrigin处开始65并将65添加到contentSize宽度(我假设65是您的图片宽度):

...
CGFloat yOrigin = i * myImage.size.width + 65;
...
jugadorSlide.contentSize = CGSizeMake(65 * numberOfViews + 65,78);
...

要找出中心的图像,请在UIScrollViewDelegate方法scrollViewDidEndDecelerating:中添加以下内容。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    int currentIndex = roundf(scrollView.contentOffset.x / 65) - 1;
    UIImageView *currentImage = [scrollView viewWithTag:currentIndex];
}

要轻松获取currentImage,请在创建图像时为其添加标记:

...
awesomeView.tag = i;
...