添加到视图时按钮图像透明

时间:2015-02-18 01:16:35

标签: ios iphone xcode uibutton

我正在制作自定义视图,以在我的应用中显示简单的星级评分系统。每颗星都是一个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];
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

可能会出现将按钮添加为子视图的视图的alpha值可能小于1。

答案 1 :(得分:0)

我认为你必须先改变星星的形象,因为它的背景是透明的,这就是问题,并检查按钮的背景颜色。 要么 您可以创建整个透明图像并设置所需的正确背景颜色。 这些图像不合适。或使用其他图像检查。