OStack程序员社区-中国程序员成长平台

标题: ios - UIImage PNG 不透明度调整 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:31
标题: ios - UIImage PNG 不透明度调整

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

- (void)setMyCustomBackButton;
{
    UIImage *backButtonImage = [UIImage imageNamed"Back Button.png"];
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
    [backButton addTarget:self actionselector(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 属性?是否与不透明度有关?



Best Answer-推荐答案


如果您在图像编辑软件中创建 PNG,请确保在创建图像时已对透明度进行编码。有时,当您将某些内容导出为 PNG 时,某些图像编辑器会提供默认未选中的“保存透明度”选项。

除此之外,PNG 上的任何透明度都将显示在 UIButtonTypeCustom 上。你不需要做任何特别的事情来保持加载 PNG 的 UIImage 的透明度。

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

哦,回答你的另一个问题,UIImage does not have any properties relating to transparency .您拥有的最接近的东西是 UIViewalpha 属性,但即使这样也只会改变 UIView 的整体不透明度。

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

UIBarButtonItem *finalBackButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];

不需要有backButtonView。您可以将 UIButton 作为自定义 View 传入。我用它来创建自定义栏按钮项目。这应该可以解决您的问题。

EDIT 2:UIBarButtonItem 类没有可以设置的 alpha 属性。此外,修改您设置为 UIBarButtonItem 的自定义 View 的 UIButton 的 alpha 属性不会影响 UIBarButtonItem 的透明度。

您可以这样做的唯一方法是修改用于 UIButton 的源图像的透明度。

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

关于ios - UIImage PNG 不透明度调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17605416/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4