我使用具有透明度的.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属性?它与不透明度有关吗?
答案 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之前,使用图像编辑软件/预览来微调透明度。