2014-03-06 20 views
0

我已經下載了用於mwphotobrowser的示例代碼,它真的cool.but我有問題時,我嘗試使用它,我希望它可以加載本地的照片,而不是URL。我試了一次又一次,但失敗了......這裏是下面的代碼:ios如何使用mwphotobrowser加載本地照片。

#import "UIImageView+WebCache.h" 
#import "MWPhotoBrowser.h" 
#import "Image.h" 
#import "ImageCell.h" 

@interface DEMOSevenViewController() <UICollectionViewDelegate, UICollectionViewDataSource, MWPhotoBrowserDelegate> 

@property (strong, nonatomic) NSMutableArray *images; 
@property (strong, nonatomic) NSMutableArray *browserImages; 
@property (strong, nonatomic) MWPhotoBrowser *browser; 

@end 

@implementation DEMOSevenViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
    // Custom initialization 
    } 
    return self; 
}  

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

self.browser = [[MWPhotoBrowser alloc] initWithDelegate:self]; 
self.browser.displayActionButton = YES; 
self.browser.displayNavArrows = YES; 
self.browser.displaySelectionButtons = NO; 
self.browser.zoomPhotosToFill = YES; 
self.browser.alwaysShowControls = YES; 
self.browser.enableGrid = NO; 
self.browser.startOnGrid = NO; 
self.browser.wantsFullScreenLayout = NO; 

[self.browser showNextPhotoAnimated:YES]; 
[self.browser showPreviousPhotoAnimated:YES]; 

[self loadImages]; 
} 

- (void)loadImages 
{ 
self.images = [[NSMutableArray alloc] init]; 
self.browserImages = [[NSMutableArray alloc] init]; 

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", HOST_URL, @"All_Images.php"]]; 
NSData *jsonResults = [NSData dataWithContentsOfURL:url]; 
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:jsonResults options:0 error:NULL]; 

NSDictionary *images = results[@"Images"]; 
for (NSDictionary *img in images) { 
    Image *imageObj = [[Image alloc] init]; 
    imageObj.imageId = [img objectForKey:@"id"]; 
    imageObj.imageName = [img objectForKey:@"name"]; 

    // Get the full image path 
    NSString *fullImagePath = [NSString stringWithFormat:@"%@%@", HOST_URL, [img objectForKey:@"full_image"]]; 
    imageObj.imagePath = fullImagePath; 

    // Get the thumbnail image path depending on the device 
    NSString *thumbnailPath; 
    if (DEVICE_IS_PAD) { 
     thumbnailPath = [NSString stringWithFormat:@"%@%@", HOST_URL, [img objectForKey:@"thumbnail_ipad"]]; 
    } else { 
     thumbnailPath = [NSString stringWithFormat:@"%@%@", HOST_URL, [img objectForKey:@"thumbnail_iphone"]]; 
    } 
    imageObj.imageThumbnail = thumbnailPath; 

    // Creates an object for each image and fill it with the retrieved info 
    [self.images addObject:imageObj]; 

    // This array stores the image paths for later use (displaying them in a photo browser) 
    MWPhoto *browserImage = [MWPhoto photoWithURL:[NSURL  URLWithString:imageObj.imagePath]]; 
    browserImage.caption = imageObj.imageName; 
    [self.browserImages addObject:browserImage]; 
} 
[self.collectionView reloadData]; 
} 

#pragma mark - MWPhotoBrowserDelegate 
- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser 
{ 
NSLog(@"Count: %lu", (unsigned long)self.browserImages.count); 
return self.browserImages.count; 
// return 93; 
} 

- (id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index 
{ 
NSLog(@"Index: %lu", (unsigned long)index); 
if (index < self.browserImages.count) { 
    return self.browserImages[index]; 
} 
return nil; 
} 

#pragma mark - UICollectionViewDataSource 
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
return self.images.count; 
} 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
{ 
return 1; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"ImageCell"; 
ImageCell *cell = (ImageCell *)[collectionView  dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; 

Image *image = self.images[indexPath.row]; 
[cell.imageView setImageWithURL:[NSURL URLWithString:image.imageThumbnail] placeholderImage:[UIImage imageNamed:@"placeholder"]]; 

return cell; 
} 

#pragma mark - UICollectionViewDelegate 
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Opens the image browser 
// NSLog(@"Selected Index: %ld", (long)indexPath.row); 
[self.browser setCurrentPhotoIndex:indexPath.row]; 
[self.navigationController pushViewController:self.browser animated:YES]; 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 


@end 

我真的很需要幫助它,請請請幫助me.thank你了。 it's the sample code from the cool man

+0

只需使用'NSURL fileURLWithPath:'使用本地文件路徑創建'NSURL'。 – rmaddy

+0

非常感謝你,請告訴我如何創造它。我是一個新手。 – user3376284

回答

0

打印圖像的路徑,並嘗試在瀏覽器

+0

非常感謝,但我無法理解和本地文件路徑,這對我很困難。 – user3376284

1

使用委託函數打開它:

-(NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser { 
return [photoShowArray count]; 

}

-(NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser { 
return [photoShowArray count]; 

}

-(id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index { 
return [photoShowArray objectAtIndex:index]; 

}

-(id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser thumbPhotoAtIndex:(NSUInteger)index { 
return [thumbnailsArray objectAtIndex:index]; 

}

,並使用[MWPhoto photoWithUrl:]加載您的圖像,因爲它具有高速緩存。 你可以使用[NSURL fileURLWithPath:路徑]將本地路徑轉換爲url