Код iOS отображает белое поле, а не серию изображений - PullRequest
1 голос
/ 26 февраля 2012

Код ниже должен отображать серию изображений в бесконечном соединенном цикле.Вместо этого он просто отображает полностью белое поле.Спасибо Аарону Хейману за то, что он зашел так далеко.

- (void)layoutScrollImages
{
    //Arrangement
    NSArray *imageViews = [NSArray arrayWithObjects:@"image1.png", @"image2.png", @"image3.png", nil];
    CGRect cRect = scrollView1.bounds;
    UIImageView *cView; 
    for (int i = 0; i < imageViews.count; i++)
    {
        cView = [imageViews objectAtIndex:i];
        cView.frame = cRect;
        [scrollView1 addSubview:cView];
        cRect.origin.x += cRect.size.width;
    }
    scrollView1.contentSize = CGSizeMake(cRect.origin.x, scrollView1.bounds.size.height);
    scrollView1.contentOffset = CGPointMake(scrollView1.bounds.size.width, 0); //should be the center page in a 3 page setup

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    scrollView1.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);
}

СЛЕДУЙТЕ ЗА:

Ничто из того, что я делаю, не имеет значения.В настоящее время мой код выглядит следующим образом, но я изменяю все, что могу придумать, но безрезультатно.

- (void)layoutScrollImages
{
    //Horizontal arrangement
    NSObject *image1 = @"image1.png";
    NSObject *image2 = @"image2.png";
    NSObject *image3 = @"image3.png";
    NSArray *imageViews = [NSArray arrayWithObjects:image1, image2, image3, nil];
    CGRect cRect = scrollView1.bounds;
    UIImageView *cView; 
    for (int i = 0; i < imageViews.count; i++)
    {
        cView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[imageViews objectAtIndex:i]]];
        cView.frame = cRect;
        [scrollView1 addSubview:cView];
        cRect.origin.x += cRect.size.width;
    }
    scrollView1.contentSize = CGSizeMake(cRect.origin.x, scrollView1.bounds.size.height);
    scrollView1.contentOffset = CGPointMake(scrollView1.bounds.size.width, 0); //should be the center page in a 3 page setup

    [self layoutScrollImages];

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    scrollView1.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);
}

1 Ответ

1 голос
/ 26 февраля 2012

Вы никогда не запускаете UIImageView.Вы хотите сделать что-то вроде этого:

        NSArray *imageViews = [NSArray arrayWithObjects:@"image1.png", @"image2.png", @"image3.png", nil];
        CGRect cRect;
        UIImageView *cView; 
        for (int i = 0; i < imageViews.count; i++)
        {
            cView = [[UIImageView alloc] initWithImage:[UIImage imageName:[imageViews objectAtIndex:i]]];
            cRect = cView.frame;
            cRect.origin.x += scrollView1.frame.size.width;
            cView.frame = cRect;
            [scrollView1 addSubview:cView];
            NSLog(@"imageView bounds: %@", NSStringFromCGRect(cView.frame));
        }

Edit: попробуйте выше и посмотрите, если что-нибудь появляется.Вот некоторые мысли:

  1. Вы уверены, что не устанавливаете для imageView значение 0 высота / ширина?Я добавил оператор NSLog в цикл.Будет напечатан кадр imageView.
  2. Вы пытались добавить изображения в self.view вместо scrollView1?Это было бы хорошим способом убедиться, что проблема не связана с рамкой scrollView1.Или используйте следующее: NSLog (@ "границы просмотра изображений:% @", NSStringFromCGRect (scrollView1.frame));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...