我正在努力旋转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的一个属性,我没有正确设置。
非常欢迎你的提示和嘘。
M.
发布于 2010-08-16 19:59:08
我看到UIButtons的UIImageView属性的行为非常奇怪--它们的一些属性似乎是只读的,包括您在这里讨论的UIViewContentMode设置。
我找到的最好的解决方案是用一个单独的UIImageView模仿“包含图像的按钮”设置,并在其上面放置一个空的自定义样式的UIButton。为您提供更大的灵活性来管理映像。
发布于 2013-02-24 07:00:49
在视图did加载的某处初始化视图时应用以下代码。这将会有所帮助。您在上面得到的答案不是真实答案:)
button.imageView.clipsToBounds = NO;
button.imageView.contentMode = UIViewContentModeCenter;
发布于 2016-01-06 05:42:01
我发现在layoutSubviews
期间通过子类化UIButton
来删除转换是这样的:
class RotatableImageButton: UIButton {
override func layoutSubviews() {
let originalTransform = imageView?.transform
imageView?.transform = CGAffineTransformIdentity
super.layoutSubviews()
if let originalTransform = originalTransform {
imageView?.transform = originalTransform
}
}
}
https://stackoverflow.com/questions/3492681
复制相似问题