- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在在 collectionViewCell 的每个项目中显示设备库中的 ALAssets 列表时遇到问题。
我的图像在 Collection View 中不可见。我尝试了在亲戚帖子中找到的所有解决方案,但没有找到答案...为什么?
这是我的开发环境:
iPhone5,苹果6.0.2,Xcode 4.5,使用 ARC 和 Storyboard。
这是我的代码:
<强>1。首先,我在委托(delegate)中获取带有设备媒体的 MutableArray :
#AppDelegate.m
-(void)loadPhotosFromDevice
{
//deviceMedia = [[NSMutableArray alloc] init];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
// Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos.
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
// Within the group enumeration block, filter if necessary
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
[group enumerateAssetsUsingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop)
{
// The end of the enumeration is signaled by asset == nil.
if (alAsset)
{
ALAssetRepresentation *representation = [alAsset defaultRepresentation];
[self addPhoto:representation andAsset:alAsset];
}
else
{
//NSLog(@"Done! Count = %d", deviceMedia.count);
//Do something awesome
}
}];
}
failureBlock: ^(NSError *error) {
// Typically you should handle an error more gracefully than this.
NSLog(@"No groups");
}];
}
}
<强>2。我使用“Media”对象类中的“AddPhoto”方法发送所有数据:
#AppDelegate.m
-(void)addPhoto:(ALAssetRepresentation *)asset andAsset:alAsset
{
//NSLog(@"Adding photo!");
Media *media = [[Media alloc] init];
media.baseurl = @"";
media.url = [asset.url absoluteString];
Thumbnail *t = [[Thumbnail alloc] init];
t.rep = asset;
t.url = [asset.url absoluteString];
media.thumbnails = [[Thumbnail alloc] initWithRepresentation:asset];
media.name = asset.filename;
media.asset = alAsset;
media.isFromDevice = YES;
[getPhotos addObject:media];
NSLog(@"\nDevice Photo added array");
}
#Media.h
import <AssetsLibrary/AssetsLibrary.h>
@interface Media : NSObject
{
//General
AudioInfo *audioInfo;
Info *info;
Header *header;
Status *requestStatus;
Exif *exif;
Thumbnail *thumbnails;
NSString *name;
NSString *uploaddt;
NSString *baseurl;
NSString *url;
NSString *createdt;
NSString *takendt;
NSString *recorddt;
ALAsset *asset;
bool isFromDevice;
}
//General
@property (nonatomic, retain) Thumbnail *thumbnails;
@property (nonatomic, retain) Status *requestStatus;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *uploaddt;
@property (nonatomic, retain) NSString *baseurl;
@property (nonatomic, retain) NSString *url;
@property (nonatomic, retain) NSString *createdt;
@property (nonatomic, retain) NSString *takendt;
@property (nonatomic, retain) NSString *recorddt;
@property (nonatomic, retain) ALAsset *asset;
@property (nonatomic, readwrite) bool isFromDevice;
@end
<强>3。然后我将它们显示在 CollectionViewController 中:
#PhotoDisplayCloudViewController
@implementation PhotoDisplayCloudViewController
- (void)viewDidLoad {
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
tableau = appDelegate.getPhotos;
[super viewDidLoad];
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return tableau.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
//CELL
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
Media *object = [[Media alloc] init];
object = [tableau objectAtIndex:indexPath.row];
//IMAGE
NSString *url = [NSString stringWithFormat:@"%@%@", object.baseurl, object.thumbnails.url];
NSLog(@"%@ start loading", object.name);
UIImageView *image = [[UIImageView alloc] init];
if (object.isFromDevice)
{
image = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage :[object.asset.self thumbnail]]];
}
else
{
image = [[UIImageView alloc] initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: url]]]];
}
[image setFrame:CGRectMake(image.frame.origin.x, image.frame.origin.y, 72, 72)];
//LABEL
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(image.frame.origin.x+6, image.frame.origin.y+58, 60, 12)];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = UIColor.blackColor;
label.contentMode = UIViewContentModeBottom;
label.font = [UIFont fontWithName:@"Times New Roman" size:9];
label.text = object.name;
//ADD VIEWS
[cell addSubview:image];
[cell addSubview:label];
NSLog(@"%@ end loading", object.name);
return cell;
}
- (void)didGrabImage:(UIImage *)image {
[collectionCell addSubview:image];
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
PhotoDetailViewController *photoDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"photoDetail"];
photoDetailViewController.MaPhoto=[tableau objectAtIndex:indexPath.row];
[self.navigationController pushViewController:photoDetailViewController animated:YES];
}
@end
请清楚地回答我^^
提前谢谢!
最佳答案
我找到了问题的答案:
感谢“adaydesign的博客”,我使用这个方法将我的资源加载到UIImageView中:
效果很好!
-(void)loadPhotoFromURL:(NSURL*)imgURL thumbnail:(BOOL)useThumbnail showIn:(UIImageView*)imView{
if (imgURL!=nil) {
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myasset){
CGImageRef iref;
if (useThumbnail) {
iref = [myasset thumbnail];
}else {
ALAssetRepresentation *rep = [myasset defaultRepresentation];
iref = [rep fullScreenImage];
}
if (iref) {
UIImage *resPhoto = [UIImage imageWithCGImage:iref];
//NSLog(@"photo size:%f x %f",resPhoto.size.width,resPhoto.size.height);
imView.image = resPhoto;
}
};//end result block
ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error){
NSLog(@"error....");
};//end failureBlock
ALAssetsLibrary *assetLib = [[[ALAssetsLibrary alloc] init] autorelease];
[assetLib assetForURL:imgURL
resultBlock:resultBlock
failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock];
}//end if
}//end function
关于ios - UICollectionViewController 中的 ALAssets 不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282346/
我正在就我的问题提出这个问题Display photolibrary images in an effectual way iPhone和 Highly efficient UITableView "
我正在使用照片查看器,但不想实现垃圾按钮。 我已经准备好了按钮,一切都很好,但有以下情况: 如何实际删除 ALAsset? 我尝试在很多地方搜索但找不到答案... 谢谢 出于某种原因,我不允许发布此问
我正在尝试使用以下代码从 ALAssets 库访问视频数据 ALAssetRepresentation *rep = [asset defaultRepresentation];
我当前有一个使用 ALAsssetsLibrary 来获取照片的应用程序。我已将照片放置到 ImageView 中,并且可以上传到服务器。拍了几张照片后在真机上测试时,发现原本应该拍人像的照片变成了风
我在比较两个 ALAssets 对象时遇到了一些麻烦。我有两个 NSMutableArray:selectedImages 和 mutableAssets。我在那里存储 ALAssets 对象。但是当
您好,我正在从 ALAsset 库中获取所有照片和视频缩略图。 我的代码工作正常,我正在获取照片和视频缩略图。但是在视频缩略图中缺少视频图标及其时间戳。 [assetImageView setImag
我正在从库中获取 ALAsset,但是当我尝试设置 UIImageView 时,UIImage 为 nil。 ALAssetsLibrary *library = [[ALAssetsLibr
我正在为 iPhone 开发视频应用程序。我正在使用 AssetsLibrary 框架录制视频并将其保存到 iPhone 相机胶卷。我使用的 API 是: - (void)writeVideoAtPa
我已经查看了 SO,但找不到这个问题的有效答案。我已经使用 ALAssets 创建了一个自定义图像选择器,但现在它不是常规图像选择器,所以没有自动压缩视频。 这就是我从 Assets 中获取视频 NS
我想从照片库中复制一张图片,但我想在以后检查一下我是否已经导入了这张图片。 想象一下这个场景。 我的照片库中有一张照片。 我通过制作副本将其导入到我的应用程序中。 我从我的图库中删除了这张照片。 稍后
给定一个表示照片的 ALAsset,是否可以在不将图像加载到 UIImageView 并且不使用 aspectRationThumnail 方法的情况下检索照片的大小(高度和宽度)? 最佳答案 请注意
我正在寻找如何显示照片库中保存的图像缩略图的解决方案。我知道缩略图有方法,但结果太小(相反的全屏尺寸太大)。我想设置我想要的缩略图的自定义大小。我试图寻找任何解决方案,但我认为它太复杂了。现在我有这些
我正在尝试获取图像的时间戳,我可以获得正确的纬度和经度值,但时间戳总是返回当前时间,而不是图像的 EXIF 时间。 ALAssetsLibraryAssetForURLResultBlock resu
我正在使用 ALAssets 框架来访问照片库。第一次访问时,它会询问用户应用程序是否可以使用他们的当前位置,我知道这是必要的以及原因。 但是,在 Core Location Manager 中,有一
如何从 ALAsset 中提取文件名? 有没有办法通过 url 或其他方式获取它? 最佳答案 从 iOS 5.0 开始,您可以从 ALAssetRepresentation 类获取文件。 ALAsse
使用 iOS 4 中提供的新资源库框架,我发现我可以使用 UIImagePickerControllerReferenceURL 获取给定视频的 url。返回的url格式如下: assets-libr
出于某种原因,以下代码中 ALAsset 对象的可编辑属性始终设置为 false: ALAsset *testAsset = [[ALAsset alloc] init]; if(!testAsset
很简单,如何获取使用 ALAssets 库检索的视频的绝对路径?我想使用 ASI 框架将此视频作为文件附件上传。 如果我使用 UIImagePickerViewController,它会起作用。但这不
我的应用程序文档库中有很多图像。我想显示文档目录图像的缩略图。 我正在使用以下代码。 UIImage *thumbImage=[UIImage imageWithContentsOfFile:strI
我已将 MP4 从 iTunes 传输到我的 iPad。如果我打开视频应用程序,我可以看到它列出 - 下面有缩略图和文件名 (my_file.mp4)。然而, Assets 的实际文件名在 iOS 中
我是一名优秀的程序员,十分优秀!