view的旋轉,這屬於比較基本的功能
view.transform = CGAffineTransformMakeRotation(M_PI);//旋轉180度
這樣就可以旋轉180度囉!!
結束!!
好啦當然不只這樣,這種方式是從view的中心旋轉,並不是從右下左下或某個特定點進行旋轉的動作
所以就上網找了些方法
覺得這方法比較好使用
首先複製這段函示
- - (CGAffineTransform)GetCGAffineTransformRotateAroundPoint:(float )centerX
- :(float)centerY
- :(float)x
- :(float)y
- :(float)angle
- {
- x = x - centerX; //計算(x,y)從(0,0)為原點的坐標系變換到(CenterX ,CenterY)為原點的座標系下的座標
- y = y - centerY;
- CGAffineTransform trans = CGAffineTransformMakeTranslation(x, y);
- trans = CGAffineTransformRotate(trans,angle);
- trans = CGAffineTransformTranslate(trans,-x, -y);
- return trans;
- }
接著如何執行呢?
- UIView *view = self.viewTest;
- float centerX = view.bounds.size.width/2;
- float centerY = view.bounds.size.height/2;
- float x = view.bounds.size.width;
- float y = view.bounds.size.height;
- CGAffineTransform trans = [self GetCGAffineTransformRotateAroundPoint:centerX :centerY :x :y :(45.0f * (M_PI / 180.0f))];
- view.transform = CGAffineTransformIdentity;
- view.transform = trans;
這樣就可以從view的右下角為中心順時針旋轉45度囉~
為何是右下角關鍵在這兩行
- float centerX = view.bounds.size.width/2;
- float centerY = view.bounds.size.height/2;
只要把你想旋轉的角度帶入就可以囉~~~
那如果你是UIImageView 旋轉後的圖片可能四周會有鋸齒狀的感覺
view.layer.allowsEdgeAntialiasing = YES;
只要加上這行,就可以減緩鋸齒狀的情況喔~
另外需要注意一點,旋轉後的 view 的 frame 會產生變化喔!!!
這句話要切記!!或許哪天會救了你!
沒有留言:
張貼留言