2016-05-26 16 views
1

iOSでビューを回転しようとすると、その座標が変更されました。ビューを90度回転するiOS

長方形の図を90度回転させたいのですが、私の問題は、回転後にその図形がフレームに正しく配置されていないことです。ここ

self.frame = CGRectMake(0, 0, screenWidth, screenHeight); 
    NSLog(@"BEFORE %@", NSStringFromCGRect(self.frame)); 

self.transform = CGAffineTransformMakeRotation(M_PI_2); 

NSLog(@"AFTER %@", NSStringFromCGRect(self.frame)); 

はログイン

 BEFORE {{0, 0}, {414, 636}} 
    AFTER {{-161, 160.99999999999997}, {636, 414}} 

であるUは、XとY座標が変更されている、これはそのコンテナに間違ってセットするビューをリードしていることがわかります。私はフレームを設定するときにそれらを変更する式を理解することはできません。適切な方法で

+0

問題はアンカーポイント[ここ](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimationBasics/CoreAnimationBasics.html)はアンカーポイントについてのガイドです –

+0

それらの三角法則を覚えておいて欲しい! – Alok

+0

りんごごとにboundsプロパティでチェックするhttps://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instp/UIView/frame – Alok

答えて

0

ビュー(myView)を必要に応じて回転させるアプリがあります。 私はこれを行う:

#define DegreesToRadians(x) ((x) * M_PI/180.0) 
CGRect rect = myView.frame; 
myView.transform = CGAffineTransformMakeRotation(DegreesToRadians(-90)); 
myView.frame = CGRectMake(
    rect.origin.x, 
    rect.origin.y, 
    rect.size.height, 
    rect.size.width // notice that Width and height are interchanged 
    ); 

ビューを回転させたときに、それはないその中心の周りに、その原点を中心に回転することを覚えておいてください。したがって、必要に応じて、回転後のビューの新しい起点とサイズを計算する必要があります。

「rect」に保存した正しい原点と幅/高さを再適用するだけです。

0

てみ使用範囲:

self.frame = CGRectMake(0, 0, screenWidth, screenHeight); 
    NSLog(@"BEFORE %@", NSStringFromCGRect(self.frame)); 

self.transform = CGAffineTransformMakeRotation(M_PI_2); 


self.frame = CGRectMake(0, 0, 
    CGRectGetWidth(self.bounds), 
    CGRectGetHeight(self.bounds)); 
NSLog(@"AFTER %@", NSStringFromCGRect(self.frame)); 

はそれが役に立てば幸い!

+0

動作しない –

関連する問題