26 iphone objective-c ios uicollectionview uicollectionviewcell
我有一个自定义的UICollectionViewCell子类,它覆盖initWithFrame:并layoutSubviews设置其视图.但是,我现在正在尝试做两件我遇到麻烦的事情.
1)我正在尝试自定义UICollectionViewCell选择的状态.例如,我想改变图像的一个在UIImageView在UICollectionViewCell.
2)I要动画(光反弹)的UIImage中UICollectionViewCell.
谁能指出我正确的方向?
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = (MyCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
[cell setSelected:YES];
}
Run Code Online (Sandbox Code Playgroud)
小智 58
在您的自定义UICollectionViewCell子类中,您可以覆盖setSelected:如下:
- (void)setSelected:(BOOL)selected {
[super setSelected:selected];
if (selected) {
[self animateSelection];
} else {
[self animateDeselection];
}
}
Run Code Online (Sandbox Code Playgroud)
我发现在重复触摸时,即使已经选择了这个方法,也会在单元格上调用此方法,因此您可能只想在发出不需要的动画之前检查您是否真的在改变状态.
Mik*_*gue 57
在您的自定义UICollectionViewCell子类中,您可以didSet在isSelected属性上实现.
斯威夫特3:
override var isSelected: Bool {
didSet {
if isSelected {
// animate selection
} else {
// animate deselection
}
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特2:
override var selected: Bool {
didSet {
if self.selected {
// animate selection
} else {
// animate deselection
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*han 17
将一个公共方法添加performSelectionAnimations到MyCollectionViewCell更改所需的定义UIImageView并执行所需的动画.然后从中调用它collectionView:didSelectItemAtIndexPath:.
所以在MyCollectionViewCell.m中:
- (void)performSelectionAnimations {
// Swap the UIImageView
...
// Light bounce animation
...
}
Run Code Online (Sandbox Code Playgroud)
在你的UICollectionViewController:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = (MyCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
[cell performSelectionAnimations];
}
Run Code Online (Sandbox Code Playgroud)
注意我已经取消了调用[cell setSelected:YES],因为UICollectionView已经应该处理了这个调用.从文档:
选择单元格并突出显示它的首选方法是使用集合视图对象的选择方法.
| 归档时间: |
|
| 查看次数: |
32477 次 |
| 最近记录: |