240 发简信
IP属地:北京
  • 您好,这个热区的数量可以限制吗?

    react 可裁剪拖拽的热区组件

    React Hot zone react 热区resize组件 Installation Usage Props PropDescriptionTypeDefaultsrc图...

  • 请问一下,UISlider滑块是如何平稳滑动的呢?

    iOS开发 UISlider设置滑块形状以及 view转化成image

    今天需求是做一个播放器界面,如下图 播放进度条呢,一般有两种方式 ProgressView UISlider最开始需求是进度条不让拖动,本着后期需求的一个更改性,最终选择了使...

  • 为啥我改成OC的无法循环滚动呢?

    collectionView实现无限循环滚动卡片

    github源码地址 效果展示 前言 去年因为项目中有个切换学校的功能,要求以卡片浮动效果展示,并且能够无限循环滚动。 之前找了个demo它是通过自定义view动画实现的,卡...

  • OC 版翻译楼主的: 复制粘贴直接用:sweat:

    #import "SlideBigAnimationLayout.h"
    #import "SDAutoLayout.h"

    /// 垂直缩放除以系数
    static CGFloat ActiveDistance = 400;
    /// 缩放系数
    static CGFloat ScaleFactor = 0.25;

    @implementation SlideBigAnimationLayout

    - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity {

    CGRect targetRect = CGRectMake(proposedContentOffset.x, 0.0, self.collectionView.width, self.collectionView.height);
    // 目标区域中包含的cell
    NSArray<UICollectionViewLayoutAttributes *> *attriArray = [super layoutAttributesForElementsInRect:targetRect];
    // collectionView落在屏幕中点的x坐标
    CGFloat horizontalCenterX = proposedContentOffset.x + (self.collectionView.width / 2.0);

    CGFloat offsetAdjustment = CGFLOAT_MAX;

    for (UICollectionViewLayoutAttributes *layoutAttributes in attriArray) {
    // 找出离中心点最近的
    CGFloat itemHorizontalCenterX = layoutAttributes.center.x;
    if (fabs(itemHorizontalCenterX - horizontalCenterX) < fabs(offsetAdjustment)) {
    offsetAdjustment = itemHorizontalCenterX - horizontalCenterX;
    }
    }
    return CGPointMake(proposedContentOffset.x + offsetAdjustment, proposedContentOffset.y);
    }

    - (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    NSArray* array = [super layoutAttributesForElementsInRect:rect];
    CGRect visibleRect = CGRectZero;
    visibleRect.origin = self.collectionView.contentOffset;
    visibleRect.size = self.collectionView.bounds.size;

    for (UICollectionViewLayoutAttributes* attributes in array) {
    CGFloat distance = CGRectGetMidX(visibleRect) - attributes.center.x;
    CGFloat normalizedDistance = fabs(distance / ActiveDistance);
    CGFloat zoom = 1 - ScaleFactor * normalizedDistance;
    attributes.transform3D = CATransform3DMakeScale(1.0, zoom, 1.0);
    }
    return array;
    }