iOS 3D立方體

立方體.gif

3D動畫總結(jié).png

ok,多了不介紹了,直接上代碼,敲一遍會比看有效果的多

#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface ViewController ()

@property (nonatomic, strong) UIView *containView;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from
//包含所有view的視圖,用來做拖拽處理,和所有子視圖的移動
_containView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
_containView.center = self.view.center;
CATransform3D trans = CATransform3DIdentity;
trans.m34 = 1/ 500;
_containView.layer.transform = trans;

#pragma mark ---底部背對著我們的視圖
[self.view addSubview:_containView];
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view1.backgroundColor = [UIColor purpleColor];
[_containView addSubview:view1];

#pragma mark ---右側(cè)的視圖
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view2.backgroundColor = [UIColor yellowColor];
//因為旋轉(zhuǎn)是根據(jù)錨點,也就是view2的中心點旋轉(zhuǎn)的,所以先將視圖往x軸和z軸各偏移(200 /2)
trans = CATransform3DTranslate(trans, 100, 0, 100);
//繞y軸旋轉(zhuǎn)90度
trans = CATransform3DRotate(trans, M_PI_2, 0, 1, 0);

view2.layer.transform = trans;
[_containView addSubview:view2];
#pragma mark ---左側(cè)的視圖 (只需要將view2沿x軸移動-100,沿z軸移動100,然后沿)
UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view3.backgroundColor = [UIColor blueColor];
//CATransform3DTranslate 和 CATransform3DMakeTranslation區(qū)別:使用make的是不對上面效果進行疊加,不使用make是對上面視圖效果進行疊加
trans = CATransform3DMakeTranslation(-100, 0, 100);
trans = CATransform3DRotate(trans, M_PI_2, 0, 1, 0);

  // trans = CATransform3DTranslate(trans, 0, 0, -200);
view3.layer.transform = trans;
[_containView addSubview:view3];

UIView *view4 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view4.backgroundColor = [UIColor grayColor];
[_containView addSubview:view4];

trans = CATransform3DMakeTranslation(0, -100, 100);
trans = CATransform3DRotate(trans, M_PI_2, 1, 0, 0);
//    trans = CATransform3DRotate(trans, M_PI_2, 1, 0, 0);
//    trans = CATransform3DTranslate(trans, 0, 100, 100);
view4.layer.transform = trans;
//
UIView *view5 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view5.backgroundColor = [UIColor blackColor];
[_containView addSubview:view5];
trans = CATransform3DMakeTranslation(0, 100, 100);
trans = CATransform3DRotate(trans, M_PI_2, 1, 0, 0);

 // trans = CATransform3DTranslate(trans, 0, 0, -200);
view5.layer.transform = trans;

//
  UIView *view6 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view6.backgroundColor = [UIColor greenColor];
[_containView addSubview:view6];
//    trans = CATransform3DRotate(trans, M_PI_2, 0, 1, 0);
//    trans = CATransform3DTranslate(trans, -100, 0, -100);
trans = CATransform3DMakeTranslation(0, 0, 200);
view6.layer.transform = trans;

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(changeAngle:)];
[_containView addGestureRecognizer:pan];

}

-(void)changeAngle:(UIPanGestureRecognizer *)sender{
//返回視圖拖動的像素
   CGPoint point =  [sender translationInView:_containView];
//point.x/30可以決定拖動的時候旋轉(zhuǎn)的速度
CGFloat angel = -M_PI_4 + point.x/30;
CGFloat angel2 = -M_PI_4 - point.y/ 30 ;

CATransform3D tran = CATransform3DIdentity;
tran.m34 = -1/ 500;
tran = CATransform3DRotate(tran, angel, 0, 1, 0);
tran = CATransform3DRotate(tran, angel2, 1, 0, 0);
// sublayerTransform: 它能夠影響到它所有的直接子圖層. 就是說可以一次性對這些圖層的容器做變換, 然后所有的子圖層都集成這個變換方法.
_containView.layer.sublayerTransform = tran;

}

注釋掉的3d變化方法整體也可以構(gòu)造立方體
demo + iOS動畫總結(jié)+思維導圖軟件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哨坪,一起剝皮案震驚了整個濱河市浊洞,隨后出現(xiàn)的幾起案子陈惰,更是在濱河造成了極大的恐慌红符,老刑警劉巖揍拆,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁漓,死亡現(xiàn)場離奇詭異蜂嗽,居然都是意外死亡墨叛,警方通過查閱死者的電腦和手機闷畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門尝盼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人佑菩,你說我怎么就攤上這事盾沫。” “怎么了倘待?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵疮跑,是天一觀的道長。 經(jīng)常有香客問我凸舵,道長祖娘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任啊奄,我火速辦了婚禮渐苏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菇夸。我一直安慰自己琼富,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布庄新。 她就那樣靜靜地躺著鞠眉,像睡著了一般薯鼠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械蹋,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天出皇,我揣著相機與錄音,去河邊找鬼哗戈。 笑死郊艘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的唯咬。 我是一名探鬼主播纱注,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胆胰!你這毒婦竟也來了狞贱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煮剧,失蹤者是張志新(化名)和其女友劉穎斥滤,沒想到半個月后将鸵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勉盅,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年顶掉,在試婚紗的時候發(fā)現(xiàn)自己被綠了草娜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡痒筒,死狀恐怖宰闰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情簿透,我是刑警寧澤移袍,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站老充,受9級特大地震影響葡盗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啡浊,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一觅够、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巷嚣,春花似錦喘先、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽红且。三九已至,卻和暖如春涤姊,著一層夾襖步出監(jiān)牢的瞬間直焙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工砂轻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奔誓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓搔涝,卻偏偏與公主長得像厨喂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庄呈,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,146評論 25 707
  • 如果在一個黎明 你聽到幾聲駝鈴 意味著我將遠行 好在霧氣蒙蒙 掩蓋了我不舍的表情 背著輕輕的行囊 帶上長長的夢想 ...
    蘇小呆閱讀 443評論 1 3
  • 晨跑中蜕煌,總是能夠看到不一樣的景象,能夠讓自己從中完全靜靜的享受這一刻身心的獨處诬留,思想的獨處斜纪。 新年的開工...
    荏時光倒影閱讀 487評論 0 1
  • 生活。生容易文兑,活著難盒刚。 小時候最愛看的就是武俠片,例如《天龍八部》绿贞∫蚩椋《倚天屠龍記》,《雪花...
    盧屹閱讀 338評論 7 3
  • 【丹昏】絕配 1 樸志訓有個毛病籍铁。 心里想的和說就來的不一樣涡上,內(nèi)心明明在吐槽別人,臉上還要笑著和別人說話拒名,喜歡總說...
    RabbitMango閱讀 2,000評論 2 4