UIImageView无法显示图像

时间:2013-08-28 04:43:22

标签: ios objective-c uiimageview mpmediaitem

出于某种原因,我无法将图像相册放入我的UIImageView中。它被添加到故事板中并声明:

@property (strong, nonatomic) IBOutlet UIImageView *displayAlbum;
@synthesize displayAlbum, titleLbl, artist;

在我的代码中:

displayAlbum = [[UIImageView alloc] init];

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:@"1079287588763212246" forProperty:MPMediaEntityPropertyPersistentID];
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate: predicate];
NSArray *queryResults = [query items];

for (MPMediaItem *song in queryResults) {
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
[displayAlbum setImage: [artwork imageWithSize:CGSizeMake(displayAlbum.frame.size.width, displayAlbum.frame.size.height)]];
        }

我能够获得其他歌曲信息,因此它肯定会得到正确的歌曲,但ImageView总是显示空白。

另一方面,如果有人可以帮我清理上面的代码,特别是摆脱for循环(它应该总是只返回一个结果),这将是很好的。感谢

2 个答案:

答案 0 :(得分:2)

这是因为您正在使用alloc init创建新的图像视图,而不是使用您在IB中创建的图像视图。你应该删除那个alloc init line。

答案 1 :(得分:0)

为什么在IBOutlet时分配displayAlbum?如果它已经在NIB中创建,那么通过分配新的,它应该不起作用,因为你将拥有完全新的UIImageView,它不是你的视图控制器的一部分。如果它不是在NIB中制作的,那么您应该通过添加属于视图控制器的一些视图的子视图并为其设置一些帧来将其添加到视图控制器。

首先,请尝试评论此行:

displayAlbum = [[UIImageView alloc] init];