我正在构建一个使用按钮代表每个用户的应用。有点像聊天头。这些按行排列在UIScrollView
中。每行4 buttons
,按钮下方显示用户名的UILabel。这些buttons
都与它们的图像一起存储在NSMutable数组中。每张图片的大小约为50kb。在大约100 UIButtons
之后,它开始有点滞后滚动(在iPhone 5上运行)。初始化按钮的代码如下,图像从Parse.com获取:
-(void)initButtonsFromFriendsArray: (NSMutableArray *)friends {
for(int i=0; i<[self.currentUser.friends count]; i++) {
//need someway to reference the buttons
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 70)];
//tag is the same as the element in the array
button.tag=i;
[button addTarget:self action:@selector(friendTapped:) forControlEvents:UIControlEventTouchUpInside];
[self.buttons addObject:button];
PFUser *user = friends[i];
PFFile *userImageFile = user[@"profilePic"];
[userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
[button setBackgroundImage:image forState:UIControlStateNormal];
}
}];
}
//after init want to display
[self refreshButtons];
}
方法refreshButtons
只是迭代通过该数组将它们放在内容UIView
(包含在UIScrollView中)中,将它们排成4行。无论如何我在内存管理方面都很有效率?阵列是否会占用大量内存空间,而图像存储在屏幕内,还是屏幕上的UIViews
?不确定如何优化它。我无法继续从服务器重新加载图像,因为它很慢,因此需要将它们存储在该阵列中。任何建议将不胜感激!