iOS實(shí)現(xiàn)圖片折疊效果
本文實(shí)例為大家分享了iOS實(shí)現(xiàn)圖片折疊效果的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
結(jié)構(gòu)布局:拖兩個(gè)UIImageView到控制器,設(shè)置相同的frame和圖片,再拖一個(gè)大的UIImageView蓋在上面,注意把大的imageView.userInteractionEnabled = YES;能夠添加手勢(shì)。
注意層次結(jié)構(gòu):
核心代碼:
// // 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); //設(shè)置漸變層 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]; } //這里也可以手動(dòng)給大的ImageView添加一個(gè)UIPanGestureRecognizer手勢(shì) - (IBAction)pan:(UIPanGestureRecognizer *)pan { //獲取移動(dòng)的偏移量 CGPoint transP = [pan translationInView:pan.view]; //讓上部圖片開(kāi)始旋轉(zhuǎn) CGFloat angle = transP.y * M_PI / 200; //近大遠(yuǎn)小效果 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; //上部圖片復(fù)位 //usingSpringWithDamping:彈性系數(shù) [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{ self.topImageV.layer.transform = CATransform3DIdentity; } completion:^(BOOL finished) { }]; } } @end
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS仿微博導(dǎo)航欄動(dòng)畫(CoreGraphics)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS仿微博導(dǎo)航欄動(dòng)畫(CoreGraphics)的實(shí)現(xiàn)方法,文章最后給出了完整的示例代碼,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07iOS中UIActionSheet動(dòng)態(tài)添加按鈕
這篇文章主要介紹了iOS中UIActionSheet動(dòng)態(tài)添加按鈕功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06iOS10 Xcode8適配7個(gè)常見(jiàn)問(wèn)題匯總
這篇文章主要為大家詳細(xì)匯總了iOS10 Xcode8適配7個(gè)常見(jiàn)問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09iOS簡(jiǎn)單易用的GCD計(jì)時(shí)器的實(shí)現(xiàn)原理
在日常開(kāi)發(fā)中總會(huì)碰到需要計(jì)時(shí)器的功能,常見(jiàn)的定時(shí)器有NSTimer、GCD、CADisplayLink。網(wǎng)上也有很多的教程介紹三者的區(qū)別,今天主要講的是GCD這種方式使用以及封裝。感興趣的小伙伴們可以參考一下2018-11-11iOS端React Native差異化增量更新的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS端React Native差異化增量更新的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06iPhone/iPad開(kāi)發(fā)通過(guò)LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能
這篇文章主要介紹了iPhone/iPad開(kāi)發(fā)之通過(guò)LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09