как прокрутить все изображения в icarousel - PullRequest
0 голосов
/ 12 марта 2012

Я хочу прокрутить все изображения в режиме карусели. Но, на мой взгляд, анимация начинает двигаться, когда я прокручиваю среднее изображение. Если я касаюсь других изображений рядом с ними, они не двигаются. Я использую кнопки в методе viewForItemAtIndex. У вас есть идеи, как я могу переместить все изображения, которые видны?

Это мой вид ForItemAtIndexMethod:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index    reusingView:(ReflectionView *)view
{


UIButton* button = nil;
if (view == nil)
{
    UIImage *image = [arrKitapKapaklari objectAtIndex:index];
    view = [[[ReflectionView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)] autorelease];

    //no button available to recycle, so create new one
    [view setBackgroundColor:[UIColor clearColor]];

    button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
    [button setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
    [button setBackgroundImage:image forState:UIControlStateNormal];
    button.titleLabel.font = [button.titleLabel.font fontWithSize:50];
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
    button.tag = 99;
    [view update];
    [view addSubview:button];

}
else
{
    button = (UIButton *)[view viewWithTag:99];
}


[button setTitle:[NSString stringWithFormat:@"%i", index] forState:UIControlStateNormal];

return view;
}

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Я думаю, что-то не так с вашей рамкой iCarousel - возможно, касания других элементов находятся за рамкой, и распознаватели жестов iCarousel не получат касания.Другая возможность состоит в том, что некоторые другие элементы вашего представления ловят прикосновения и не передают это iCarousel.iCarousel предназначен для обработки всех касаний (не только от основного элемента).Как я уже писал в комментариях под вашим постом, вы уверены, что с настройкой карусели все в порядке?

0 голосов
/ 12 марта 2012

это мой код для метода, с которым вы работаете (сейчас я использую изображения с метками под каждым изображением, изображение хранится в массиве).

    - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
   {

        if (index < [items count]) {
            image = [UIImage imageNamed:[self.hldImage objectAtIndex:index]]; 
            view = [[UIImageView alloc] initWithImage:image];


            UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, image.size.height,image.size.width, 50)];
            NSString *carName = [NSString stringWithFormat:[hldName objectAtIndex:index]];
            label.backgroundColor = [UIColor clearColor];
            label.text = carName;
            label.textColor = [UIColor whiteColor];
            label.textAlignment = UITextAlignmentCenter;
           label.lineBreakMode = UILineBreakModeWordWrap;
           label.numberOfLines = 99;
            [view addSubview:label];
            [view setTag:index+1];

        }
        return view;
    }

это код, который я реализовал для приведения изображений в центр (это в ICarousel.m)

- (void)didTap:(UITapGestureRecognizer *)tapGesture
{
    NSInteger index = [self indexOfItemView:[tapGesture.view.subviews lastObject]];
    if (centerItemWhenSelected && index != self.currentItemIndex)
    {
        NSLog(@"tapped item not at center, index =  %i",index);
        [self scrollToItemAtIndex:index animated:YES];
        NSUInteger tag =  index;
    }
    if ([delegate respondsToSelector:@selector(carousel:didSelectItemAtIndex:)])
    {
        [delegate carousel:self didSelectItemAtIndex:index];
        NSUInteger tag =  index;
    }
    if (self.currentItemIndex)
    {
        NSLog(@"Current index item, index = %i",index);
    }
}

все мои изображения в Карусели имеют тег, связанный сих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...