我想找到一个旋转的矩形UIView的四角的坐标。获取旋转的矩形UIView的角坐标iOS
我想我能做的一个方法是使用recognitionizer.rotation,找到旋转角度然后计算出产地。但是这需要一些几何计算。
- (IBAction)handlePan:(UIRotationGestureRecognizer*)recognizer {
NSLog(@"Rotation in degrees since last change: %f", [recognizer rotation] * (180/M_PI));
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
NSLog(@"%@",recognizer);
recognizer.rotation = 0;
NSLog(@"bound is %f and %f, frame is %f and %f, %f and %f.",recognizer.view.bounds.size.width,recognizer.view.bounds.size.height, recognizer.view.frame.size.width,recognizer.view.frame.size.height, recognizer.view.frame.origin.x, recognizer.view.frame.origin.y);
}
我只是想知道是否有其他更简单的方法来获得坐标? 谢谢!
编辑:
看起来我们这里有一个很大的答案(见下面的回答)。我设法通过一种愚蠢的方式来计算角落 - 使用旋转角度和几何。它的作品,但不容易和轻。我在这里分享我的代码,以防万一有人可能想使用它
float r = 100;
NSLog(@"radius is %f.",r);
float AAngle = M_PI/3+self.rotatedAngle;
float AY = recognizer.view.center.y - sin(AAngle)*r;
float AX = recognizer.view.center.x - cos(AAngle)*r;
self.pointPADA = CGPointMake(AX, AY);
NSLog(@"View Center is (%f,%f)",recognizer.view.center.x,recognizer.view.center.y);
NSLog(@"Point A has coordinate (%f,%f)",self.pointPADA.x,self.pointPADA.y);
float BAngle = M_PI/3-self.rotatedAngle;
float BY = recognizer.view.center.y - sin(BAngle)*r;
float BX = recognizer.view.center.x + cos(BAngle)*r;
self.pointPADB = CGPointMake(BX, BY);
NSLog(@"Point B has coordinate (%f,%f)",BX,BY);
float CY = recognizer.view.center.y + sin(AAngle)*r;
float CX = recognizer.view.center.x + cos(AAngle)*r;
self.pointPADC = CGPointMake(CX, CY);
NSLog(@"Point C has coordinate (%f,%f)",CX,CY);
float DY = recognizer.view.center.y + sin(BAngle)*r;
float DX = recognizer.view.center.x - cos(BAngle)*r;
self.pointPADD = CGPointMake(DX, DY);
NSLog(@"Point D has coordinate (%f,%f)",DX,DY);
如何取r = 100的值? – iAviator