3

我有一个 480x331 的图像并且有一个透明的背景。透明部分就在图像的边缘附近。我的 UIButton 是 72x37。当我在 IB 中将图像设置为按钮的背景图像时,图像的透明边缘在按钮中显示为白色。没有图像,按钮是带圆角的白色。我猜那是我看到的白色。如果是这样,这意味着图像透明度正在工作,但按钮的白色区域正在显示。

如果我将图像设置为 UIButton 的 Image 属性,即使在更改视图模式之后,它也无法正确缩放,并且保持其完整大小。

关于我应该使用哪个属性来使缩放和透明度正常工作的任何建议?

4

2 回答 2

7

您使用的是什么类型的按钮?

听上去你可能正在使用 UIButtonTypeRoundedRect 样式,但 UIButtonTypeCustom 可能更合适。您可以在 Interface Builder 的检查器窗口中更改它。

于 2009-10-27T23:02:00.037 回答
6

@Christopher Fairbaim 建议使用 UIButtonTypeCustom 是正确的。使用 UIButtonTypeRoundedRect 会给你透明区域的白色背景。

然而,在 Interface Builder 中进行连接有其局限性。如果您想从数据集或基于用户输入动态生成 UIView、UIButton 和资产,则以编程方式执行此操作是可行的方法。

创建按钮:(注意:这也适用于其他 UIButtonTypes,但我在这个特定的透明度示例中使用了 UIButtonTypeCustom。)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];

要更改所需的属性:

btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37);  //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];

要为各种状态添加图像(假设这些是透明的 .png):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];

要将按钮添加到视图(从 viewController 类中):

[self addSubview:btnName];

(请原谅任何拼写错误,因为我从我的一个项目中复制和粘贴并试图概括命名。)

于 2011-04-11T10:59:00.320 回答