我使用具有透明度的 .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-推荐答案 strong>
如果您在图像编辑软件中创建 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 作为自定义 View 传入。我用它来创建自定义栏按钮项目。这应该可以解决您的问题。
EDIT 2:UIBarButtonItem 类没有可以设置的 alpha 属性。此外,修改您设置为 UIBarButtonItem 的自定义 View 的 UIButton 的 alpha 属性不会影响 UIBarButtonItem 的透明度。
您可以这样做的唯一方法是修改用于 UIButton 的源图像的透明度。
修改您的原始 PNG 以获得所需的透明度(根据您的评论,您需要非常低的透明度)。在导出 PNG 之前,使用图像编辑软件/预览来微调透明度。
关于ios - UIImage PNG 不透明度调整,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/17605416/
|