任何人都看过[UIColor initWithPatternImage]忽略了PNG的alpha值的问题?如果是这样,最好的解决办法是什么?为什么initWithPatternImage失去了PNG的alpha值
我使用一个PNG作为我的按钮对象数组的背景层,它包含几个预先设置的alpha值,每个像素在要用作纹理背景的图像中。它可以很好地作为图案/纹理颜色加载,但它会将所有的关键透明区域作为不透明的黑色来呈现。
重要的是我可以得到正确的alpha值,以便按钮图像正确显示。按钮框架不包括来自背景的alpha阴影,因为这不是按钮的“可点击”部分。此外,我的按钮对象的图像和背景图像也使用透明度,所以它确实需要在每个按钮后面直接有清晰的背景,以让适当的真实当前颜色设置通过(最底层的UIView将其背景色设置为当前用户选择的颜色)。为包含此纹理的UIView图层设置单个alpha值不适用于我的需要。
任何帮助,将不胜感激。我目前的解决方法是使用png使用几个UIImageView的完全重复的,重复编程的布局,而不是具有模式填充的单个UIView。
这里是一小段代码,但它是非常标准的用于车削一个UIImage成的UIColor用作模式/纹理颜色:
UIView *selectorView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,320)];
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"SelectorViewBackground.png"]];
selectorView.backgroundColor = background;
[mainView addSubview:selectorView]; // pattern background layer. Add UIButtons on top of this selectorView layer
[self addSubview:mainView]; // current user selected color set in mainView.
[selectorView release];
[background release];
嗨Jay,非常感谢您的回复。是的,我三重检查了PNG,后面的任何视图,它总共为32位。由于所有内容都位于滚动视图内,所以最后我选择创建多个UIImageView,并根据UIButton的行数创建多个UIImageView,它也很容易与UIButtons数组一起滚动。相同的PNG具有与UIImageView一样的透明效果。有一天,如果我有时间,我会检查使用图层时的差异。干杯! :) – 2011-02-24 04:13:46