首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在UIButton中旋转imageView,而不缩放它

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

Stack Overflow用户
提问于 2010-08-16 19:30:47
回答 3查看 10K关注 0票数 17

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

下面是我的代码..

代码语言:javascript
复制
-(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.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-16 19:59:08

我看到UIButtons的UIImageView属性的行为非常奇怪--它们的一些属性似乎是只读的,包括您在这里讨论的UIViewContentMode设置。

我找到的最好的解决方案是用一个单独的UIImageView模仿“包含图像的按钮”设置,并在其上面放置一个空的自定义样式的UIButton。为您提供更大的灵活性来管理映像。

票数 1
EN

Stack Overflow用户

发布于 2013-02-24 07:00:49

在视图did加载的某处初始化视图时应用以下代码。这将会有所帮助。您在上面得到的答案不是真实答案:)

代码语言:javascript
复制
button.imageView.clipsToBounds = NO;
button.imageView.contentMode = UIViewContentModeCenter;
票数 60
EN

Stack Overflow用户

发布于 2016-01-06 05:42:01

我发现在layoutSubviews期间通过子类化UIButton来删除转换是这样的:

代码语言:javascript
复制
class RotatableImageButton: UIButton {
    override func layoutSubviews() {
        let originalTransform = imageView?.transform
        imageView?.transform = CGAffineTransformIdentity
        super.layoutSubviews()
        if let originalTransform = originalTransform {
            imageView?.transform = originalTransform
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3492681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档