gpt4 book ai didi

ios - UiCollectionViewCell 随机图片翻转

转载 作者:行者123 更新时间:2023-12-01 16:47:57 25 4
gpt4 key购买 nike

我一直在这里寻找答案,但没有成功,所以现在我自己试试。

我试图用包含图像的不同单元格 + 带有单元格的动画制作一个 UicollectionView。

我希望单元格对我的图像进行“随机翻转”(5 个不同的图像)

UIViewAnimationOptionTransitionFlipFromLeft



在一个有 5-6 秒延迟的循环中。

我现在的动画是这样的:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
[cell.superview bringSubviewToFront:collectionView];

[UIView transitionWithView:cell
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
[UICollectionViewCell commitAnimations];
cell.transform = CGAffineTransformMakeRotation(0.0);
}
completion:^(BOOL finished) {}];


}

我知道我不应该使用 didSelectItemAtIndexPath,但我使用它只是为了查看动画是否正确。

如果您查看此视频,您可以在 Windows 8 手机上看到我的意思。 Youtube video

最佳答案

好的,我对这个想法很感兴趣,所以我制作了一些代码的原型(prototype)。我需要专门针对您的需求量身定制,但这可能是一个好的开始。首先,您需要将 UICollectionViewCell 子类化。为了连接IBOutlet到单元格内的 imageView。然后您可以引用我的代码片段来帮助您入门。

- (void)viewDidLoad
{
[super viewDidLoad];
self.imageList = @[@"img1.png", @"img2.png", @"img3.png", @"img4.png"];
}

// This assumes your images are inside your Bundle.

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

[NSTimer scheduledTimerWithTimeInterval:4.0
target:self
selector:@selector(updateCells:)
userInfo:nil
repeats:YES];

}

- (void)updateCells:(NSTimer *)timer
{
NSArray *visibleIndexPaths = [self.collectionView indexPathsForVisibleItems];
for (NSIndexPath *indexPath in visibleIndexPaths) {
SubclassCollectionViewCell *cell = (SubclassCollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
[UIView transitionWithView:cell
duration:1.0f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
cell.imageView.image = [self randomImage];
} completion:nil];
}
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 1;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

return cell;
}

- (UIImage *)randomImage
{
NSInteger randomNumber = arc4random() % [self.imageList count];
return [UIImage imageNamed:[self.imageList objectAtIndex:randomNumber]];
}

更新:

如果您一次只希望一个单元格随机翻转,则需要取出 forupdateCells 中循环方法。相反,试试这个:
- (void)updateCells:(NSTimer *)timer
{
NSArray *visibleIndexPaths = [self.collectionView indexPathsForVisibleItems];
NSInteger randomIndex = arc4random() % [visibleIndexPaths count];
NSindexPath *randomIndexPath = [NSIndexPath indexPathForItem:randomIndex inSection:0];

SubclassCollectionViewCell *cell = (SubclassCollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];

[UIView transitionWithView:cell
duration:1.0f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
cell.imageView.image = [self randomImage];
}
completion:nil
];
}

关于ios - UiCollectionViewCell 随机图片翻转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com