我以某种角度添加了UIView。现在在运行时,我想将该视图向上移动(例如20px)。

开始时

 dragView = [[DragbleView alloc] initWithFrame:CGRectMake(10, 200, 200, 90)];
dragView.transform = CGAffineTransformMakeRotation (-0.663247);


在运行时

  NSLog(@"Before : %@",NSStringFromCGRect(dragView.frame));
[dragView setCenter:CGPointMake(dragView.frame.origin.x, dragView.center.y+20)];
NSLog(@"After : %@",NSStringFromCGRect(dragView.frame));


控制台输出

Before : {{3.4947295778412979, 147.97225037436704}, {213.0105408443174, 194.05549925126593}}
After : {{-103.0105408443174, 167.97225037436704}, {213.0105408443174, 194.05549925126593}}


如您所见,它去了错误的地方。如何放置20像素以上

最佳答案

它正在按照您指定的方式进行。使用X和Y的中心点将获得更好的结果:

[dragView setCenter:CGPointMake(dragView.center.x, dragView.center.y + 20)];


另外,如下所述。 iOS使用0,0作为左上角,因此要向上移动某些内容,需要从dragView.center.y中减去20。

关于ios - 在CGAffineTransformMakeRotation之后更改帧吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27530289/

10-09 20:15