当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS实现图片折叠效果

iOS实现图片折叠效果

2020年05月14日  | 移动技术网IT编程  | 我要评论

高坂千岁,那种网站你们懂的,html教程

本文实例为大家分享了ios实现图片折叠效果的具体代码,供大家参考,具体内容如下

效果图:

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

注意层次结构:

核心代码:

//
// viewcontroller.m
// 图片折叠
//
// created by llkj on 2017/8/31.
// copyright © 2017年 laynecheung. all rights reserved.
//

#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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网