适用于ios 7的黑色ImageGallery图像

时间:2014-02-12 11:34:50

标签: iphone objective-c ios7 uiimageview image-gallery

在我努力升级我的应用程序以支持IOS7时,我发现ImageGallery不会加载图像。在其他iOS中没问题。

在imageGalleryView中:

- (void)initWithPhotos:(NSMutableArray *)photoURLStrings andCaptions:(NSArray *)myCaptions moveToPage:(int)page {
captions = [myCaptions copy];
photoUrls = [photoURLStrings copy];
NSLog(@"array---> %@", photoUrls);

photoLoaded = [[NSMutableArray alloc] init];
for (int i=0; i<[photoURLStrings count]; i++) {
    [photoLoaded addObject:[NSNumber numberWithBool:FALSE]];
}

[pageControl setNumberOfPages:[photoUrls count]];

//scrollView= [[UIScrollView alloc] init];
scrollView.backgroundColor = [UIColor blackColor];
scrollView.pagingEnabled = TRUE;
scrollView.autoresizesSubviews = TRUE;
scrollView.contentSize = CGSizeMake(320 * [photoUrls count], scrollView.frame.size.height);

scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width*page, 0);

if (([captions objectAtIndex:page] == nil) || ([[captions objectAtIndex:page] isEqualToString:@""])) {
    [textView setHidden:TRUE];
} else {
    [textView setHidden:FALSE];
    [textView setText:[captions objectAtIndex:page]];
}

[self showImages:page];}

- (void)showImages:(int)page {

AsyncImageViewController *asyncImageView;

if ((page>=0)&&(page<[photoUrls count])) {
    if (![[photoLoaded objectAtIndex:page] boolValue]) {
        [photoLoaded replaceObjectAtIndex:page withObject:[NSNumber numberWithBool:TRUE]];
        asyncImageView = [[AsyncImageViewController alloc] init];
        //NSLog(@"%@",[NSString stringWithFormat:@"%@",[photoUrls objectAtIndex:page]]);
        [asyncImageView loadImageFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[photoUrls objectAtIndex:page]]] pos:1];
        //NSLog(@"page:%i",page);
        asyncImageView.frame = CGRectMake(320*page,0,320,scrollView.frame.size.height);
        //[scrollView setBackgroundColor:[UIColor colorWithPatternImage:asyncImageView.image]];
        [scrollView addSubview:asyncImageView];
        [asyncImageView release];
    }
}
page = page - 1;
if ((page>=0)&&(page<[photoUrls count])) {
    if (![[photoLoaded objectAtIndex:page] boolValue]) {
        [photoLoaded replaceObjectAtIndex:page withObject:[NSNumber numberWithBool:TRUE]];
        asyncImageView = [[AsyncImageViewController alloc] init];
        [asyncImageView loadImageFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[photoUrls objectAtIndex:page]]] pos:1];
        asyncImageView.frame = CGRectMake(320*page,0,320,scrollView.frame.size.height);

        [scrollView addSubview:asyncImageView];
        [asyncImageView release];
    }
}

page = page + 2;
if ((page>=0)&&(page<[photoUrls count])) {
    if (![[photoLoaded objectAtIndex:page] boolValue]) {
        [photoLoaded replaceObjectAtIndex:page withObject:[NSNumber numberWithBool:TRUE]];
        asyncImageView = [[AsyncImageViewController alloc] init];
        [asyncImageView loadImageFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[photoUrls objectAtIndex:page]]] pos:1];
        asyncImageView.frame = CGRectMake(320*page,0,320,scrollView.frame.size.height);
        [scrollView addSubview:asyncImageView];
        //[scrollView setBackgroundColor:[UIColor colorWithPatternImage:asyncImageView.image]];

        [asyncImageView release];}}}    

在asyncimageview中:

- (void)loadImageFromURL:(NSURL*)url pos:(int) posicio {
if (connection!=nil) { [connection release]; }
if (data!=nil) { [data release]; }

NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

loading = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
if (posicio == 0) {
    loading.center = CGPointMake(75/2,75/2);
}else {
    loading.center = CGPointMake(160,210);
}

[loading startAnimating];
[self addSubview:loading];
[loading release];}//the URL connection calls this repeatedly as data arrives- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)incrementalData {
if (data==nil) { data = [[NSMutableData alloc] initWithCapacity:2048]; } 
[data appendData:incrementalData];}//the URL connection calls this once all the data has downloaded- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
//so self data now has the complete image 
[connection release];
connection=nil;
if ([[self subviews] count]>0) {
    //then this must be another image, the old one is still in subviews
    [[[self subviews] objectAtIndex:0] removeFromSuperview]; //so remove it (releases it also)
}//make an image view for the image
imageView = [[[UIImageView alloc] initWithImage:[UIImage imageWithData:data]] autorelease];


//make sizing choices based on your needs, experiment with these. maybe not all the calls below are needed.
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight );

//[self setBackgroundColor:[UIColor colorWithPatternImage:imageView]];
[self addSubview:imageView];
imageView.frame = self.bounds;
[imageView setNeedsLayout];
[self setNeedsLayout];

[loading stopAnimating];

[data release]; //don't need this any more, its in the UIImageView now
data=nil;}

//just in case you want to get the image directly, here it is in subviews- (UIImage*) image {
UIImageView* iv = [[self subviews] objectAtIndex:0];
return [iv image];} 

我检查了所有,看到它是UIView而不是UIImageView。可能苹果改变了一些东但xCode不会抛出任何错误。

知道怎么解决吗?

0 个答案:

没有答案