怎么在iOS中实现一个图片折叠效果-创新互联

这篇文章给大家介绍怎么在iOS中实现一个图片折叠效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为亭湖企业提供专业的网站建设、做网站,亭湖网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

结构布局:拖两个UIImageView到控制器,设置相同的frame和图片,再拖一个大的UIImageView盖在上面,注意把大的imageView.userInteractionEnabled = YES;能够添加手势。

核心代码:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *topImageV;
@property (weak, nonatomic) IBOutlet UIImageView *buttomImageV;
@property (nonatomic, weak) CAGradientLayer *gradientL;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  //1.让上不图片只显示上半部分
  self.topImageV.layer.contentsRect = CGRectMake(0, 0, 1, 0.5);
  //2.让下不图片只显示下半部分
  self.buttomImageV.layer.contentsRect = CGRectMake(0, 0.5, 1, 0.5);

  self.topImageV.layer.anchorPoint = CGPointMake(0.5, 1);
  self.buttomImageV.layer.anchorPoint = CGPointMake(0.5, 0);

  //设置渐变层
  CAGradientLayer *gradidentL = [CAGradientLayer layer];
  gradidentL.frame = self.buttomImageV.bounds;
  gradidentL.opacity = 0;
  gradidentL.colors = @[(id)[UIColor clearColor].CGColor, (id)[UIColor blackColor].CGColor];
  self.gradientL = gradidentL;
  [self.buttomImageV.layer addSublayer:gradidentL];
}

//这里也可以手动给大的ImageView添加一个UIPanGestureRecognizer手势
- (IBAction)pan:(UIPanGestureRecognizer *)pan {

  //获取移动的偏移量
  CGPoint transP = [pan translationInView:pan.view];
  //让上部图片开始旋转
  CGFloat angle = transP.y * M_PI / 200;

  //近大远小效果
  CATransform3D transform = CATransform3DIdentity;
  //眼睛离屏幕的距离(透视效果)
  transform.m34 = -1 / 300.0;

  self.gradientL.opacity = transP.y * 1 / 200.0;

  self.topImageV.layer.transform = CATransform3DRotate(transform, -angle, 1, 0, 0);


  if (pan.state == UIGestureRecognizerStateEnded) {
    self.gradientL.opacity = 0;
    //上部图片复位
    //usingSpringWithDamping:弹性系数
    [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
      self.topImageV.layer.transform = CATransform3DIdentity;
    } completion:^(BOOL finished) {

    }];
  }
}

@end

关于怎么在iOS中实现一个图片折叠效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:怎么在iOS中实现一个图片折叠效果-创新互联
网站网址:http://pwwzsj.com/article/cedgjg.html