2016年5月29日 星期日

[IOS] view的旋轉,從指定位置旋轉


view的旋轉,這屬於比較基本的功能

view.transform = CGAffineTransformMakeRotation(M_PI);//旋轉180度
這樣就可以旋轉180度囉!!
結束!!






好啦當然不只這樣,這種方式是從view的中心旋轉,並不是從右下左下或某個特定點進行旋轉的動作

所以就上網找了些方法
覺得這方法比較好使用

首先複製這段函示



  1. - (CGAffineTransform)GetCGAffineTransformRotateAroundPoint:(float )centerX
  2.                                                           :(float)centerY
  3.                                                           :(float)x
  4.                                                           :(float)y
  5.                                                           :(float)angle
  6. {
  7.     x = x - centerX; //計算(x,y)從(0,0)為原點的坐標系變換到(CenterX CenterY)為原點的座標系下的座標
  8.     y = y - centerY; 
  9.     
  10.     CGAffineTransform  trans = CGAffineTransformMakeTranslation(x, y);
  11.     trans = CGAffineTransformRotate(trans,angle);
  12.     trans = CGAffineTransformTranslate(trans,-x, -y);
  13.     return trans;
  14. }


接著如何執行呢?


  1.         UIView *view = self.viewTest;
  2.         float centerX = view.bounds.size.width/2;
  3.         float centerY = view.bounds.size.height/2;
  4.         float x = view.bounds.size.width;
  5.         float y = view.bounds.size.height;
  6.          CGAffineTransform trans = [self GetCGAffineTransformRotateAroundPoint:centerX :centerY :x :y :(45.0f * (M_PI / 180.0f))];
  7.         view.transform = CGAffineTransformIdentity;
  8.         view.transform = trans;


這樣就可以從view的右下角為中心順時針旋轉45度囉~

為何是右下角關鍵在這兩行
  1.         float centerX = view.bounds.size.width/2;
  2.         float centerY = view.bounds.size.height/2;


只要把你想旋轉的角度帶入就可以囉~~~

那如果你是UIImageView 旋轉後的圖片可能四周會有鋸齒狀的感覺

view.layer.allowsEdgeAntialiasing = YES;

只要加上這行,就可以減緩鋸齒狀的情況喔~



另外需要注意一點,旋轉後的 view 的 frame 會產生變化喔!!!

這句話要切記!!或許哪天會救了你!





沒有留言:

張貼留言