UIView的addMotionEffect:在UICollectionViewCell上时失去其效果

康志镐

您可以通过在物理设备上下载并运行以下代码来重现该错误:https : //github.com/Hoya/RCCPeakableImageView

它的作用是通过UIImageView子类向图像添加视差效果。尝试克隆,构建项目,如果倾斜/平移手机,则图像会稍微动起来以产生视差效果。

UIImageView子类创建一个内部UIImageView,其框架比其自身稍大,并通过UIView的addMotionEffect添加UIInterpolatingMotionEffects:非常简单。

当使用UIScrollView和UITableView时,此方法效果很好,但是由于某些原因,滚动UICollectionView时,重用的UICollectionViewCells将失去运动效果。请注意,有趣的是,一旦切换到UIScrollView或UITableView演示并切换回UICollectionView演示,动作效果将再次开始起作用。

有没有解决的办法?

RCCCollectionViewController

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    RCCAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
    static NSString *identifier = @"Cell";
    RCCPeakableCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier
                                                                           forIndexPath:indexPath];
    [cell.imageView setImage:appDelegate.images[indexPath.row]];
    [cell.imageView setPadding:CGPointMake(20.f, 20.f)];
    
    return cell;
}

RCCPeakableCollectionViewCell

@interface RCCPeakableCollectionViewCell : UICollectionViewCell
@property (nonatomic, weak) IBOutlet RCCPeakableImageView *imageView;
@end
托尼

您的代码中有一个问题:

[cell.imageView setImage:appDelegate.images[indexPath.row]];
[cell.imageView setPadding:CGPointMake(20.f, 20.f)];

在这里,setImage:将在图像视图上添加一些运动效果,然后setPadding:将其再次添加。

我对RCCPeakableImageView进行了一些修改,将添加的运动效果代码移至layoutSubviews,并且在重用的UICollectionViewCell上运行良好。以下是更新的代码:

- (void)setImage:(UIImage *)image
{
  // Store image
  self.RCC_imageView.image = image;

  [self setNeedsLayout];
}

- (void)setPadding:(CGPoint)padding
{
  // Store padding value
  _padding = padding;

  [self setNeedsLayout];
}

- (void)layoutSubviews
{
  [super layoutSubviews];

  // Remove exising motion effects
  for (UIMotionEffect *effect in [self.RCC_imageView motionEffects]) {
    [self.RCC_imageView removeMotionEffect:effect];
  }

  // Add motion effects if there is any image.
  UIImage *image = self.RCC_imageView.image;
  if (image) {
    // code that add motion effects
    // ...
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UIView的addMotionEffect:在UICollectionViewCell上时失去其效果

来自分类Dev

当我将鼠标悬停在文本上时,我会失去悬停效果

来自分类Dev

UIView上的扭曲\弯曲效果?

来自分类Dev

具有动态图像尺寸的UICollectionViewCell-在u滚动时,当单元重复使用TestApp时,图像将失去其初始约束

来自分类Dev

removeFromSuperLayer有时不适用于UICollectionViewCell上的子UIView iOS Swift

来自分类Dev

将鼠标悬停在图像上方的某些文本上时,如何阻止图像失去其不透明属性?

来自分类Dev

CreateJs Canvas的形状在Windows Phone上失去其坐标

来自分类Dev

旋转场景时EdgesHelper失去其网格

来自分类Dev

在照片上绘图 - 旋转时,失去笔触

来自分类Dev

UICV布局无效时,UICollectionViewCell无法重传其子视图

来自分类Dev

在Customize UIView上添加子视图效果不佳

来自分类Dev

定义stringformat时,TextBox不会更新其视觉效果

来自分类Dev

定义stringformat时,TextBox不会更新其视觉效果

来自分类Dev

设置备用图像时,NSButton失去蓝色突出显示效果

来自分类Dev

我的ImageButton在添加背景色时失去了动画效果

来自分类Dev

单击 AdobeCreativeSDK 上的“效果”时出现 NoClassDefFoundError

来自分类Dev

按钮上的文本在更改IsEnabled时失去中心对齐

来自分类Dev

当某个元素或其任何后代失去焦点时,请删除一个类

来自分类Dev

为什么接收到PubNub消息时我的基因剔除模块会失去其绑定?

来自分类Dev

Javascript变量失去其价值

来自分类Dev

当视图超出其边界时将UIView渲染为图像

来自分类Dev

当视图超出其边界时将UIView渲染为图像

来自分类Dev

当在透明的UIView上使用手势进行子类化以检测其背后的对象时,手势不起作用

来自分类Dev

在UIView上绘制时UIImage反转

来自分类Dev

高图失去平滑缩放效果

来自分类Dev

当失去焦点时,JScrollPane失去滚动位置

来自分类Dev

单击时如何从元素上移除悬停效果?

来自分类Dev

在滑块上使用移动效果时出现问题

来自分类Dev

服务器上的颜色时如何应用渐变效果

Related 相关文章

  1. 1

    UIView的addMotionEffect:在UICollectionViewCell上时失去其效果

  2. 2

    当我将鼠标悬停在文本上时,我会失去悬停效果

  3. 3

    UIView上的扭曲\弯曲效果?

  4. 4

    具有动态图像尺寸的UICollectionViewCell-在u滚动时,当单元重复使用TestApp时,图像将失去其初始约束

  5. 5

    removeFromSuperLayer有时不适用于UICollectionViewCell上的子UIView iOS Swift

  6. 6

    将鼠标悬停在图像上方的某些文本上时,如何阻止图像失去其不透明属性?

  7. 7

    CreateJs Canvas的形状在Windows Phone上失去其坐标

  8. 8

    旋转场景时EdgesHelper失去其网格

  9. 9

    在照片上绘图 - 旋转时,失去笔触

  10. 10

    UICV布局无效时,UICollectionViewCell无法重传其子视图

  11. 11

    在Customize UIView上添加子视图效果不佳

  12. 12

    定义stringformat时,TextBox不会更新其视觉效果

  13. 13

    定义stringformat时,TextBox不会更新其视觉效果

  14. 14

    设置备用图像时,NSButton失去蓝色突出显示效果

  15. 15

    我的ImageButton在添加背景色时失去了动画效果

  16. 16

    单击 AdobeCreativeSDK 上的“效果”时出现 NoClassDefFoundError

  17. 17

    按钮上的文本在更改IsEnabled时失去中心对齐

  18. 18

    当某个元素或其任何后代失去焦点时,请删除一个类

  19. 19

    为什么接收到PubNub消息时我的基因剔除模块会失去其绑定?

  20. 20

    Javascript变量失去其价值

  21. 21

    当视图超出其边界时将UIView渲染为图像

  22. 22

    当视图超出其边界时将UIView渲染为图像

  23. 23

    当在透明的UIView上使用手势进行子类化以检测其背后的对象时,手势不起作用

  24. 24

    在UIView上绘制时UIImage反转

  25. 25

    高图失去平滑缩放效果

  26. 26

    当失去焦点时,JScrollPane失去滚动位置

  27. 27

    单击时如何从元素上移除悬停效果?

  28. 28

    在滑块上使用移动效果时出现问题

  29. 29

    服务器上的颜色时如何应用渐变效果

热门标签

归档