Доброе утро,UICollectionView замерзает IOS приложение
Я использую UICollectionView впервые, чтобы показать изображения от пользователя (например, профиль Facebook) и на данный момент я могу показать изображения хорошо, но у меня есть некоторые проблемы:
1- Когда я нахожусь в моем профиле, приложение замерзает примерно на 2-3 минуты из-за загрузки 5 изображений.
2 Когда я перехожу через UICollectionView, он зависает, когда приложение снова загружает изображения за пределы экрана.
Что мне нужно сделать, чтобы не замораживать приложение при загрузке пользовательских изображений? И что мне нужно сделать, чтобы перемещаться по CollectionView без замерзания? Может быть, система кеш-то, что мне нужно?
Вот мой код:
ProfileViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor: [self colorWithHexString:@"FFFFFF"]];
self.profileimage.layer.cornerRadius = self.profileimage.frame.size.width/2;
self.profileimage.clipsToBounds = YES;
self.profileimage.layer.borderWidth = 1.0f;
self.profileimage.layer.borderColor = [UIColor whiteColor].CGColor;
[self fetchJson];
[self fetchImages];
self.oneCollectionView.dataSource = self;
self.oneCollectionView.delegate = self;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 1;
}
-(NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return _carImages.count;
}
// COLLECTION VIEW
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCollectionViewCell *myCell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"MyCell"
forIndexPath:indexPath];
NSString *data = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"imagen"];
NSURL * imageURL = [NSURL URLWithString:data];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage * images = [UIImage imageWithData:imageData];
myCell.imageview.image = images;
return myCell;
}
-(void)fetchImages {
self.carImages = [[NSMutableArray alloc] init];
NSString *usersPassword = [SSKeychain passwordForService:@"login" account:@"account"];
NSString * urlString = [NSString stringWithFormat:@"http://mywebsite.com/posts.php?usersPassword=%@",usersPassword];
NSURL * url = [NSURL URLWithString:urlString];
NSData * data = [NSData dataWithContentsOfURL:url];
NSError *error;
[_jsonArray removeAllObjects];
_jsonArray = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves
error:&error];
for(int i=0;i<_jsonArray.count;i++)
{
NSDictionary * jsonObject = [_jsonArray objectAtIndex:i];
NSString* imagen = [jsonObject objectForKey:@"imagen"];
[_carImages addObject:imagen];
}
}
Спасибо заранее.
Вы используете фактическое изображение (с большим размером) ИЛИ вы сделали эскизы (с очень маленьким размером foo, отображаемым в 'UICollectioViewCell')? – Anon
Я использую фактическое изображение и внутри изображения, я просто говорю ширину и высоту. –