如何在UIButton中旋转imageView,而不是缩放它

时间:2010-08-16 11:30:47

标签: iphone cocoa-touch uibutton core-graphics

我正在努力旋转UIBUtton的imageView属性而不缩放它。有问题的图像是24x18 - 宽度比它高 - 但是一旦旋转到位,图像就会被缩放以保持这些尺寸 - 留下一个非常挤压的图像。我该如何防止这种情况?

以下是我的代码..

-(IBAction)rotateButton
{
NSLog( @"Rotating button" );

[UIView beginAnimations:@"rotate" context:nil];
[UIView setAnimationDuration:.5f];
if( CGAffineTransformEqualToTransform( button.imageView.transform, CGAffineTransformIdentity ) )
{
    button.imageView.transform = CGAffineTransformMakeRotation(M_PI/2);
} else {
    button.imageView.transform = CGAffineTransformIdentity;
}
[UIView commitAnimations];
}

如果我将变换应用于按钮而不是button.imageView,则不会发生,因此我猜测它是imageView的一个属性,我没有设置正确。

你的线索&嘘声非常受欢迎

微米。

3 个答案:

答案 0 :(得分:52)

在视图中的某个地方初始化视图时应用以下代码。这会有所帮助。你上面得到的答案不是一个真正的答案:)

button.imageView.clipsToBounds = NO;
button.imageView.contentMode = UIViewContentModeCenter;

答案 1 :(得分:3)

我发现在CocoaScripting.framework工作期间继承UIButton以删除转换,如下所示:

layoutSubviews

答案 2 :(得分:1)

我已经看到UIButtons的UIImageView属性表现得非常奇怪 - 似乎它们的一些属性是只读的,包括你在这里谈论的UIViewContentMode设置。

我发现的最佳解决方案是使用单独的UIImageView模仿“包含图像的按钮”设置,并在其上面设置一个空的自定义样式的UIButton。使您可以更灵活地管理图像。