在 UIButton 中,setImage 和 setBackgroudnImage 的内容 id 不同,它旋转了 90 度

Posted

技术标签:

【中文标题】在 UIButton 中,setImage 和 setBackgroudnImage 的内容 id 不同,它旋转了 90 度【英文标题】:in UIButton, the setImage and setBackgroudnImage content id different, it has rotate 90 degree 【发布时间】:2012-04-16 02:34:47 【问题描述】:

我已经对 UIButton 进行了测试,按钮应该显示来自相机的捕获缓冲区,所以我将为 UIButton 设置图像和背景图像。 从相机捕获的数据中,我设置了图像和背景图像,图像显示是正确的,但是当我按下按钮时,背景图像已经旋转了 90 度。 测试代码是:

NSData *imagedata = [AVCaptureStillImageOutput jpegStillImageNSDataRepesentation:buffer];
UIImage *image = [[UIImage alloc] initWithData:imagedata];
[galleryBtn setImage:image forState:UIControlStateNormal];
[galleryBtn setBackgroundImage:image forState:UIControlStateNormal];

但是当我从 png 数据创建 UIImage 时,显示是正确的并且没有旋转。

UIImage *image = [UIImage imageNamed:@"0.png"];

请帮帮我。

【问题讨论】:

我没有在 UIButton 上方使用 UIImageView,并设置 UIIMageView 内容。但是我不知道为什么UIButton的图片和背景图片会显示不同,即使我给这个UIButton设置了相同的UIImage。 我检查了从相机 jpg 结果创建的 UIImage,旋转不是 0,是 3。 我尝试了另一种方法来解决这个问题。从 Graphics 创建一个新的 UIImage。然后将图像和背景图像设置为 UIButton。 【参考方案1】:

解决方案是将高亮图像状态(以及正常)设置为:

[galleryBtn setImage:image forState:UIControlStateHighlighted];
[galleryBtn setImage:image forState:UIControlStateNormal];

虽然这确实隐藏了默认情况下在印刷过程中发生的任何颜色突出显示。

【讨论】:

以上是关于在 UIButton 中,setImage 和 setBackgroudnImage 的内容 id 不同,它旋转了 90 度的主要内容,如果未能解决你的问题,请参考以下文章

UIButton setImage 不适用于自定义注释视图

setImage:forState 不适用于 UIButton 的子类

iOS开发笔记10-关于UIButton的 setBackgroundImage 和 setImage区别

ios Custom UIButton scale setImage down不工作

调用 setImage: 后 UIButton 不会更新它的图像

如何更改图像 UIButton 的大小和颜色?