[英]How to rotate UIView by 45 degrees?
我想通过M_PI/4
用动画旋转我的UIButton
。 这是我的代码:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[UIView animateWithDuration:.5 animations:^{
self.closeButton.transform = CGAffineTransformMakeRotation(M_PI/4);
}];
}
但这会使我的按钮的框架损坏。 动画前的帧是(260 0; 44 44)
,动画后的帧变为(250.887 -9.1127; 62.2254 62.2254)
。 我看到这篇文章和其他几个,但我不明白,如何通过M_PI/2
实现UIButton动画旋转。
应用转换后, frame
属性无效。 根据文件:
警告:如果transform属性不是identity变换,则此属性的值未定义,因此应忽略。
所以只要结果看起来没问题,这就是预期的行为。
如果要移动按钮,则需要保存转换,将其重置为CGAffineTransformIdentity
,设置新帧,然后重新应用旧转换。 或者,即使应用了变换,您也可以访问和修改框架的center
属性。
UIView的frame
是完全包围视图的最小矩形。 当您按PI / 2旋转时,框架将按sqrt(2)展开,并且将调整原点以使中心保持在同一点,这正是发生的情况。
如果你想让按钮旋转并保持相同的框架,你需要在旋转时压缩按钮,就像这样
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGFloat w = self.closeButton.bounds.size.width / sqrtf( 2.0f );
CGFloat h = self.closeButton.bounds.size.height / sqrtf( 2.0f );
NSLog( @"%@ w=%f", NSStringFromCGRect( self.closeButton.bounds ), w );
[UIView animateWithDuration:.5 animations:^{
self.closeButton.transform = CGAffineTransformMakeRotation(M_PI/4);
self.closeButton.bounds = CGRectMake( 0, 0, w, h );
}];
NSLog( @"%@", NSStringFromCGRect( self.closeButton.frame ) );
}
Xcode - 10
斯威夫特 - 4倍
self.yourView.transform = CGAffineTransform(rotationAngle: .pi/4)
这可以帮助您将您的uiview旋转到45度
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.