Scrollview не остается на центральном индикаторе - PullRequest
0 голосов
/ 10 февраля 2011

Я прилагаю свой пример кода для справки, пожалуйста, сделайте его в центре, это то, с чем я столкнулся. Это не остановка на центральном индикаторе.

Примечание. Все кнопки являются динамическими и поступают из сети, но в этом примере я сделал их из массива с жестким кодом. Но в оригинальном сценарии их количество (количество кнопок) может измениться.

    - (void)viewDidLoad {

    arr = [[NSMutableArray alloc] initWithObjects:@"Test1",@"Test2",@"Test3",@"Test4",@"Test5",nil];


    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_content_slide.png"]];
    img.frame = CGRectMake(0, 20, 320, 85);
    img.contentMode = UIViewContentModeScaleAspectFill;


    [self.view addSubview:img];

    [self setScrollButtons];

    [super viewDidLoad];

}

- (void) setScrollButtons
{
    UIScrollView *tagScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 30, 320, 44)];
    tagScrollView.backgroundColor = [UIColor clearColor];
    [tagScrollView setShowsHorizontalScrollIndicator:NO];
    [tagScrollView setShowsVerticalScrollIndicator:NO];
    [tagScrollView setCanCancelContentTouches:NO];
    tagScrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
    tagScrollView.clipsToBounds = YES;
    tagScrollView.scrollEnabled = YES;
    tagScrollView.pagingEnabled = YES;
    tagScrollView.bounces = YES;
    tagScrollView.tag = 2;

    int xaxis = 0;

    for (int i = 0; i < [arr count]; i++) {

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(xaxis, 0, 160, 44);
        //btn.titleLabel.text = [NSString stringWithFormat:@"%@",[arr objectAtIndex:i]];
        [btn setTitle:[arr objectAtIndex:i] forState:UIControlStateNormal];
        NSLog(@"%@", btn.titleLabel.text);

        xaxis += btn.frame.size.width + 20;

        [tagScrollView addSubview:btn];
    }


    [tagScrollView setContentSize:CGSizeMake([arr count] * 200, tagScrollView.frame.size.height)];

    [self.view addSubview:tagScrollView];
}

Найти код здесь UnAligned код прокрутки

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

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

- (void)scrollViewDidEndDecelerating: (UIScrollView *) scrollView

{

CGPoint offset = scrollView.contentOffset;
int temp = floor(offset.x/160);
[tagScrollView scrollRectToVisible:CGRectMake(temp*160, 0, 320, 44) animated:YES];

}

нормально работает для этой конфигурации ....... {

int xaxis = 0;

for (int i = 0; i < [arr count]; i++) {

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(160*xaxis+85, 0, 150, 44);
    [btn setTitle:[arr objectAtIndex:i] forState:UIControlStateNormal];
    NSLog(@"%@", btn.titleLabel.text);
    xaxis ++;//= btn.frame.size.width + 40;
    [tagScrollView addSubview:btn];
}
   [tagScrollView setContentSize:CGSizeMake(160*xaxis+250, tagScrollView.frame.size.height)];

}

и .....

tagScrollView.pagingEnabled = NO;

0 голосов
/ 21 февраля 2011

код урона с этим

int xaxis = 0;

for (int i = 0; i < [arr count]; i++) {

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(320*xaxis+80, 0, 160, 44);
    //btn.titleLabel.text = [NSString stringWithFormat:@"%@",[arr objectAtIndex:i]];
    [btn setTitle:[arr objectAtIndex:i] forState:UIControlStateNormal];
    //[btn setBackgroundImage:[UIImage imageNamed:@"remove_fav.png"] forState:UIControlStateNormal];
    NSLog(@"%@", btn.titleLabel.text);

    xaxis ++;//= btn.frame.size.width + 40;

    [tagScrollView addSubview:btn];
}


[tagScrollView setContentSize:CGSizeMake([arr count] * 320, tagScrollView.frame.size.height)];

[self.view addSubview:tagScrollView];

это решит вашу проблему

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