NSArray图像不会显示在ScrollView中

时间:2012-08-15 03:18:26

标签: ios nsarray scrollview

NSArray图片有:

2012-08-15 10:12:39.687 test[4200:11103] (
    "http://192.168.1.165/Images/Demo/1.jpg",
    "http://192.168.1.165/Images/Demo/0.jpg",
    "http://192.168.1.165/Images/Demo/0.jpg",
    "http://192.168.1.165/Images/Demo/2.jpg",
    "http://192.168.1.165/Images/Demo/2.jpg",
    "http://192.168.1.165/Images/Demo/2.jpg",
    "http://192.168.1.165/Images/Demo/2.jpg",
    "http://192.168.1.165/Images/Demo/1.jpg",
    "http://192.168.1.165/Images/Demo/1.jpg",
    "http://192.168.1.165/Images/Demo/1.jpg" )

代码.m:

dispatch_async(htvque, ^{
        NSData* data = [NSData dataWithContentsOfURL: tophotfilm];

        NSError* error;

        json = [NSJSONSerialization JSONObjectWithData:data
                                               options:kNilOptions 
                                                 error:&error];

        NSDictionary *list = [json objectForKey:@"List"];


        NSMutableArray *arrPoster =[[NSMutableArray alloc]init];
        for(NSString *po in list)
        {
            NSString *poster = [po valueForKey:@"Poster"];
            [arrPoster addObject:poster];

        }
        myArray = [NSArray arrayWithArray:arrPoster];
        NSArray *colors = [[NSArray alloc] initWithObjects:[UIColor redColor], 
                           [UIColor greenColor], [UIColor magentaColor],
                           [UIColor blueColor], [UIColor orangeColor], 
                           [UIColor brownColor], [UIColor grayColor], nil];
            //NSLog(@"%@",colors);
            NSLog(@"%@",myArray);
        for (int i = 0; i < myArray.count; i++) {
                //NSLog(@"%@",myArray.count);
            NSString *imageName = [NSString stringWithFormat:@"%@", i];
            UIImage *image = [UIImage imageNamed:imageName];
            UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

            CGRect rect = imageView.frame;

            rect.origin.x = self.scrollView.frame.size.width * i;
            rect.origin.y = 0;
            rect.size = scrollView.frame.size;

            [self.scrollView addSubview:imageView];

        }

        scrollView.pagingEnabled = YES;
        scrollView.showsHorizontalScrollIndicator = NO;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.contentSize = CGSizeMake(scrollView.frame.size.width *
        myArray.count,scrollView.frame.size.height);
        pageControl.currentPage = 0;
        pageControl.numberOfPages = myArray.count;
        [super viewDidLoad];
    });

使用NSArray颜色,它工作正常,但NSArray图像有一些错误。


scrollview不显示listimage,它显示第一张图片,任何人都知道为什么......

  

dispatch_async(dispatch_get_main_queue(),^ {                   for(int i = 0; i&lt; myArray.count; i ++)                   {                       // NSString * imageName = [NSString stringWithFormat:@“%@”,[myArray objectAtIndex:i]];

                NSURL *urlImage = [NSURL URLWithString:[NSString stringWithFormat:@"%@",[myArray objectAtIndex:i]]];
                //NSLog(@"%@",urlImage);
                UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:urlImage]];
                UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

                CGRect rect = imageView.frame;
                rect.size.height = imgHeight;
                rect.size.width = imgWidth;
                imageView.frame = rect;
                imageView.tag = i;

                //rect.size = scrollView.frame.size;
                [scrollView addSubview:imageView];
            }

            scrollView.pagingEnabled = YES;
            scrollView.showsHorizontalScrollIndicator = NO;
            scrollView.showsVerticalScrollIndicator = NO;
            scrollView.contentSize = CGSizeMake(scrollView.frame.size.width *
     

myArray.count,scrollView.frame.size.height);                   pageControl.currentPage = 0;                   pageControl.numberOfPages = myArray.count;               });

2 个答案:

答案 0 :(得分:0)

检查此行代码

NSString *imageName = [NSString stringWithFormat:@"%@", i];

您的图像名称只有1,2等,而不是日志中打印的图像名称

应该是

[myArray objectATIndex:i];

答案 1 :(得分:0)

您正在使用imageNamed:,它只能用于项目内的图像,如果我理解您的问题,您正试图从服务器访问它们。试试这个UIImage方法:imageWithData:

NSURL *url = [NSURL URLWithString:[myArray objectAtIndex:i]];
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];