我正在制作自定义视图,以在我的应用中显示简单的星级评分系统。每颗星都是一个UIButton,它将特定的星形图像文件设置为其图像。在故事板中一切正常但是当我在设备上运行应用程序时,每个星形图像都会略微透明。
当我设置按钮本身的背景颜色时,它们是100%不透明但图像仍然略微透明。为什么同一个按钮的图像不会不透明?我只是希望星星总是不透明而不依赖于背景。
我刚刚加入SO,所以我没有足够的声誉来发布图片,但这里有一个图片的链接,可能会更好地解释这个问题:photo
自定义UIView的基本代码:
- (void)layoutSubviews
{
[super layoutSubviews];
self.opaque = YES;
[self drawStars];
}
- (void)drawStars {
float imagePadding = self.padding;
CGFloat starWidth = self.selectedStarImage.size.width;
for (NSInteger counter = 0; counter < self.totalStars; counter++)
{
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(counter * (imagePadding + starWidth), 0, starWidth, starWidth)];
button.opaque = YES;
if (counter >= self.rating) {
[button setImage:self.starImage forState:UIControlStateNormal];
}
else {
[button setImage:self.selectedStarImage forState:UIControlStateNormal];
}
[self addSubview:button];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
button.tag=counter;
}
}
- (void)updateStars
{
for (UIView *subview in self.subviews) {
[subview removeFromSuperview];
}
[self drawStars];
}
非常感谢任何帮助。
答案 0 :(得分:0)
可能会出现将按钮添加为子视图的视图的alpha值可能小于1。
答案 1 :(得分:0)
我认为你必须先改变星星的形象,因为它的背景是透明的,这就是问题,并检查按钮的背景颜色。 要么 您可以创建整个透明图像并设置所需的正确背景颜色。 这些图像不合适。或使用其他图像检查。