如果用戶觸摸它,則更改UICollectionViewCell
的高度。爲了達到這個目的,我使用performBatchUpdates:
來更改底層數據並使用標準單元格動畫。這可以完美地工作,並且變化會通過標準的增長和縮小動畫獲得動畫效果。自定義UICollectionViewCell contentView動畫
此外,我使用reloadSection
來更新該部分中單元格的所有子視圖。這裏是我的代碼:
[collectionView performBatchUpdates:^{
dataHelper.isCellExpanded = !dataHelper.isCellExpanded;
} completion:^(BOOL finished) {
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section]];
}];
我需要實現擴展單元格狀態子視圖的靈活重新排序。所以我不使用自動佈局。我只更改子視圖框架,並想動畫框架更改以及UICollectionViewCell
動畫。
問題是單元格的contentView
內部的子視圖在沒有動畫的情況下得到更新,在單元格的高度變化動畫完成後被更新。但我想動畫的細胞子視圖連同高度變化的動畫。如何實現呢?
UPDATE
在我UICollectionViewCell
一個自定義動畫的方法是這樣的:
- (void)animate {
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveLinear
animations:^
{
CGRect labelFrame = self.testLabel.frame;
labelFrame.origin.y += 70;
self.testLabel.frame = labelFrame;
}
completion:nil];
}
我創造我UICollectionViewCell
子類的initWithFrame:
的testLabel
像這樣:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
CGRect cellFrame = CGRectMake(0, 0, frame.size.width, frame.size.height);
// content
_testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, frame.size.height - 20, frame.size.width - 20, 20)];
_testLabel.backgroundColor = [UIColor redColor];
_testLabel.textColor = [UIColor blackColor];
_testLabel.text = @"test";
[self.contentView addSubview:_testLabel];
....
這什麼都不做。我爲我的手機添加了一個'animate'方法。在這個方法裏面我調用了一個標準的'animateWithDuration'。代碼被調用,但沒有動畫。 –
你的動畫實現是怎樣的? – Istvan
我更新了原始問題的來源 –