ios – 缩放整个UICollectionView

ios – 缩放整个UICollectionView,第1张

概述我有一个iPad应用程序,我正在使用UICollectionView,每个UICollectionViewCell只包含一个UI Image. 目前我每页显示每9个UIImages(3行* 3列),我有几页. 我想使用Pinch Gesture来放大整个UICollectionView来增加/减少每页显示的行数/列数,最好是在Pinch手势期间获得漂亮的缩放动画! 目前,我在我的UICollect 我有一个iPad应用程序,我正在使用UICollectionVIEw,每个UICollectionVIEwCell只包含一个UI Image.
目前我每页显示每9个UIImages(3行* 3列),我有几页.

我想使用Pinch Gesture来放大整个UICollectionVIEw来增加/减少每页显示的行数/列数,最好是在Pinch手势期间获得漂亮的缩放动画!

目前,我在我的UICollectionVIEw上添加了一个Pinch Gesture.我捕获了Pinch Gesture事件以使用比例因子计算行/列数,如果它已更改,那么我使用以下内容更新完整的UICollectionVIEw:

[_theCollectionVIEw performBatchUpdates:^{     [_theCollectionVIEw deleteSections:[NSIndexSet indexSetWithIndex:0]];     [_theCollectionVIEw insertSections:[NSIndexSet indexSetWithIndex:0]]; } completion:nil];

它有效,但在过渡期间我没有平滑的动画.

任何的想法? UICollectionVIEw继承自UIScrollVIEw,是否有可能重用UIScrollVIEw Pinch手势功能来实现我的目标?

解决方法 我假设你正在使用默认的UICollectionVIEwDelegateFlowLayout,对吗?然后确保相应地响应委托方法,并且当发生夹点手势时,只需使布局无效.

例如,如果我想调整每个项目的大小,同时捏:

@interface VIEwController () <UICollectionVIEwDataSource,UICollectionVIEwDelegate,UICollectionVIEwDelegateFlowLayout>@property (nonatomic,assign) CGfloat scale;@property (nonatomic,weak)   IBOutlet UICollectionVIEw *collectionVIEw;@end@implementation VIEwController- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];    self.scale = 1.0;    [self.collectionVIEw registerClass:[UICollectionVIEwCell class] forCellWithReuseIDentifIEr:@"cell"];    UIPinchGestureRecognizer *gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(dIDReceivePinchGesture:)];    [self.collectionVIEw addGestureRecognizer:gesture];}- (CGSize)collectionVIEw:(UICollectionVIEw *)collectionVIEw layout:(UICollectionVIEwLayout *)collectionVIEwLayout sizeforItemAtIndexPath:(NSIndexPath *)indexPath{    return CGSizeMake(50*self.scale,50*self.scale);}- (voID)dIDReceivePinchGesture:(UIPinchGestureRecognizer*)gesture{    static CGfloat scaleStart;    if (gesture.state == UIGestureRecognizerStateBegan)    {        scaleStart = self.scale;    }    else if (gesture.state == UIGestureRecognizerStateChanged)    {        self.scale = scaleStart * gesture.scale;        [self.collectionVIEw.collectionVIEwLayout invalIDateLayout];    }}

self.scale属性仅用于show,您可以将相同的概念应用于任何其他属性,这不需要beginUpdates / endUpdates,因为用户自己正在进行比例的计时.

Here’s a running project,万一你想看到它在行动.

总结

以上是内存溢出为你收集整理的ios – 缩放整个UICollectionView全部内容,希望文章能够帮你解决ios – 缩放整个UICollectionView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存