UIImage PNG不透明度调整

时间:2013-07-11 23:47:43

标签: ios objective-c uiimage png opacity

我使用具有透明度的.png图片创建了自定义按钮。但是,当我将其实现为UIImage时,透明度就会丢失。这是我正在使用的代码:

- (void)setMyCustomBackButton;
{
    UIImage *backButtonImage = [UIImage imageNamed:@"Back Button.png"];
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(popCurrentViewController) forControlEvents:UIControlEventTouchUpInside];
    backButton.frame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);


    UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 63, 33)];
    backButtonView.bounds = CGRectOffset(backButtonView.bounds, -12, -2);
    [backButtonView addSubview:backButton];
    UIBarButtonItem *finalBackButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
    self.navigationItem.leftBarButtonItem = finalBackButton;
}

透明度是否有UIImage属性?它与不透明度有关吗?

1 个答案:

答案 0 :(得分:1)

如果您要在图像编辑软件中创建PNG,请确保在创建图像时对透明度进行了编码。有时某些图像编辑器可以选择“保存透明度”,默认情况下取消选中,当您将某些内容导出为PNG时。

除此之外,PNG上的任何透明度都会显示在UIButtonTypeCustom上。您无需执行任何特殊操作即可保留正在加载PNG的UIImage的透明度。

在代码中使用图像之前,请在预览中打开它以确保透明度存在。

哦,回答你的另一个问题UIImage does not have any properties relating to transparency。最接近的是alpha的{​​{1}}属性,但即使只是改变UIView的整体不透明度。

编辑:我第一次阅读你的问题时错过了这个。尝试:

UIView

无需使用backButtonView。您可以将UIButton作为自定义视图传递。我用它来创建自定义栏按钮项。这应该可以解决你的问题。

编辑2 UIBarButtonItem *finalBackButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 类没有您可以设置的Alpha属性。此外,修改您设置为UIBarButtonItem自定义视图的UIButton的Alpha属性不会影响UIBarButtonItem的透明度。

您可以执行此操作的唯一方法是修改用于UIBarButtonItem的源图像的透明度。

修改原始PNG以获得所需的透明度(根据您的评论,您需要非常低的透明度)。在导出PNG之前,使用图像编辑软件/预览来微调透明度。