圖片折疊效果

最終的效果,圖片來自網(wǎng)絡(luò),

OC代碼

#import"ViewController.h"

@interfaceViewController()

@property(weak,nonatomic)IBOutletUIImageView*topView;

@property(weak,nonatomic)IBOutletUIImageView*bottomView;

@property(weak,nonatomic)IBOutletUIView*dragView;

@property(nonatomic,weak)CAGradientLayer*layer;

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

//先讓上部分View顯示圖片上部分內(nèi)容

// 0~1

_topView.layer.contentsRect=CGRectMake(0,0,1,0.5);

//設(shè)置錨點(diǎn)

_topView.layer.anchorPoint=CGPointMake(0.5,1);

//設(shè)置下部分顯示內(nèi)容

_bottomView.layer.contentsRect=CGRectMake(0,0.5,1,0.5);

_bottomView.layer.anchorPoint=CGPointMake(0.5,0);

//添加拖動(dòng)手勢

UIPanGestureRecognizer*pan = [[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(pan:)];

[_dragViewaddGestureRecognizer:pan];

//陰影效果,添加到底部

CAGradientLayer*layer = [CAGradientLayerlayer];

_layer= layer;

layer.frame=_bottomView.bounds;

//設(shè)置漸變顏色

layer.colors=@[(id)[UIColorclearColor].CGColor,(id)[UIColorblackColor].CGColor];

layer.opacity=0;

//? ? //設(shè)置漸變的方向

//

layer.startPoint = CGPointMake(0, 0);

//

layer.endPoint = CGPointMake(1, 0);

//

//? ? //設(shè)置顏色漸變的開始位置

//

layer.locations = @[@0.5];

[_bottomView.layeraddSublayer:layer];

}

//只要手指在拖動(dòng)的View移動(dòng)的時(shí)候就會調(diào)用

- (void)pan:(UIPanGestureRecognizer*)pan

{

//獲取手勢偏移量

CGPointtransP =? [pantranslationInView:_dragView];

//計(jì)算旋轉(zhuǎn)角度

CGFloatangle = -transP.y/200.0*M_PI;

//增加立體感

CATransform3Dtransform =CATransform3DIdentity;

//

d:人的眼睛和屏幕的垂直距離

CGFloatd =300;

//設(shè)置形變的m34就可以增加立體感,立體感(近大遠(yuǎn)小)

transform.m34= -1/ d;

//秒速形變的旋轉(zhuǎn)的度數(shù)

transform =CATransform3DRotate(transform,angle,1,0,0);

//開始旋轉(zhuǎn)

_topView.layer.transform= transform;

//設(shè)置陰影的透明度

CGFloatopacity = transP.y/200;

_layer.opacity= opacity;

if(pan.state==UIGestureRecognizerStateEnded) {

//還原

// Damping:值越小,彈簧效果越明顯

// options:秒速動(dòng)畫執(zhí)行過程,勻速,快入快出

[UIViewanimateWithDuration:1delay:0usingSpringWithDamping:0.2initialSpringVelocity:1options:UIViewAnimationOptionCurveEaseInOutanimations:^{

_topView.layer.transform=CATransform3DIdentity;

}completion:^(BOOLfinished) {

}];

//彈簧效果

//上部分形變清空

//陰影透明

_layer.opacity=0;

}

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 此次文章,講述的是Layer的一個(gè)屬性contentsRect,利用它可以控制圖層內(nèi)容的展示,然后還有利用漸...
    袁崢閱讀 7,988評論 18 70
  • 繞著x軸轉(zhuǎn)動(dòng) 上半部分旋轉(zhuǎn),下半部分不動(dòng) 一張圖片旋轉(zhuǎn)的效果.layer.transform MakeRotati...
    彼岸的黑色曼陀羅閱讀 442評論 0 0
  • 圖片折疊效果 1.如何制作圖片折疊效果? 把一張圖片分成兩部分顯示,上面一部分,下面一部分,折疊上面部分的內(nèi)容。 ...
    SoManyDumb閱讀 1,229評論 0 0
  • 原理: 1、創(chuàng)建工程-打開Main.storyboard-拖入兩個(gè)ImageView . 調(diào)整位置 .設(shè)置圖片 2...
    Codepgq閱讀 1,231評論 1 5
  • VLC的集成和使用 VLC介紹 VLC Media Player (VideoLAN) 為 Windows、Lin...
    Pocket閱讀 20,365評論 75 66

友情鏈接更多精彩內(nèi)容