【问题标题】:UIImage PNG Opacity adjustmentUIImage PNG 不透明度调整
【发布时间】:2013-07-13 03:44:46
【问题描述】:

我使用具有透明度的 .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 属性?是否与不透明度有关?

【问题讨论】:

    标签: ios objective-c uiimage png opacity


    【解决方案1】:

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

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回复。不幸的是,我在预览中打开它并检查了透明度。它在那里,但它仍然没有加载透明的 png
    • 感谢您使用此功能。我尝试用您在答案中输入的代码替换 UIView 代码,但它仍然不起作用。还有其他想法吗?
    • Cody,不确定我是否理解这里的问题。最初,我以为您在 PNG 图像中应该有透明度的地方得到白色/黑色填充。从我在上传的屏幕截图中看到的,您有一个带有非矩形边框的 PNG,并且不透明度
    • 对不起。我应该包括这个。它应该是这样的:i.imgur.com/T3DsBxJ.png
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2011-10-15
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多