我有一个UIToolbar的alpha设置为.6。看起来不错 - 但它留下的按钮与0.6的alpha,这是好的,但不是真的需要。有没有办法独立设置UIBarButtonItem的alpha?我将如何让这些看起来像白色而不是略显灰色?UIToolBar与缩小阿尔法,要UIBarButtonItem具有阿尔法1
回答
当您在视图上设置Alpha时,所有子视图都会使用相同的Alpha值进行合成。你可以做什么而不是在视图本身上设置阿尔法,就是使用具有阿尔法值的色调或背景色。这可以产生类似的效果,而不会导致所有子视图继承透明度。
toolbar.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
如果不工作,你真正需要做的视图本身透明,你将不得不返工您的视图层次,这样的不透明观点并不子视图。由于条形按钮项目不能用作标准视图,因此它可能不会在工具栏的情况下可行。
self.bottomToolbar.barStyle = UIBarStyleBlack;
self.bottomToolbar.translucent = YES;
self.bottomToolbar.backgroundColor = [UIColor clearColor];
查看不透明度设置为1,这些设置为我做了。
这是更好的答案 – respectTheCode 2011-03-23 16:15:55
上面没有我在的iOS 4.3工作,但这并:
子类UIToolbar,提供了一个方法:
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
我发现barStyle does'n实际上很重要。无论是设置背景颜色清除。
self.toolbar.barStyle = UIBarStyleDefault;
self.toolbar.tintColor = [UIColor colorWithWhite:0.0 alpha:0.5];
self.toolbar.translucent = YES;
那些行为我完成了工作(ios4.3)。 据我所知,将工具栏transfluent属性设置为YES,您已将其设置为清晰(透明)的背景。当然,这取决于你设定的色调。如果它不包含alpha组件,则该栏将是不透明的。
控制工具栏的alpha值的主要问题是它适用于整个工具栏及其按钮。如果将某个backgroundColor
设置为某个阿尔法值< 1,则生成的颜色与barStyle
(UIBarStyleDefault或UIBarStyleBlack)相结合,导致比原始backgroundColor
更不透明的颜色。如果您设置了barTintColor
,它似乎会覆盖所有其他设置,包括您设置的任何Alpha值,从而导致完全不透明的颜色。
我已经能够做到的唯一方法是在不影响其按钮的情况下减少工具栏的alpha值,是setting its background image via setBackgroundImage:forToolbarPosition:barMetrics:
。可以通过1px的图像具有所需颜色和alpha创建1px的:
+ (UIImage *)onePixelImageWithColor:(UIColor *)color {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 1, 1, 8, 0, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
CGImageRef imgRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imgRef];
CGImageRelease(imgRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return image;
}
然后设置背景图片:
[toolbar setBackgroundImage:[self onePixelImageWithColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]
forToolbarPosition:UIBarPositionBottom
barMetrics:UIBarMetricsDefault];
许多小时评估上述各方法之后,我发现只有Ryan H.提供的方法是可行的。这是因为这是您可以操纵Alpha值而其他人无法操作的方法。
这里是斯威夫特3版本:
override func viewDidLoad() {
super.viewDidLoad()
let bgImageColor = UIColor.black.withAlphaComponent(0.6) //you can adjust the alpha value here
self.upperToolBar.setBackgroundImage(onePixelImageWithColor(color: bgImageColor),
forToolbarPosition: .any,
barMetrics: UIBarMetrics.default)
}
func onePixelImageWithColor(color : UIColor) -> UIImage {
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
var context = CGContext(data: nil, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)
context!.setFillColor(color.cgColor)
context!.fill(CGRect(x:0,y: 0, width: 1, height:1))
let image = UIImage(cgImage: context!.makeImage()!)
return image
}
- 1. UIToolbar动画阿尔法ios7
- 2. 将UIView与阿尔法1 UIView与阿尔法0.5顶部0
- 3. 阿尔法0零UIView,但阿尔法1儿童控制
- 4. CreateJs阿尔法
- 5. 从UIColor UIImage与阿尔法
- 6. 画布clearrect,与阿尔法
- 7. 的Xcode:阿尔法
- 8. Unicode和:阿尔法:
- 9. 摇篮3.0阿尔法2引发异常,而阿尔法1工作正常
- 10. 与阿雷尔
- 11. 正则表达式帮助阿尔法点阿尔法模式
- 12. Hadoop的2.X线:如何“阿尔法”是“阿尔法”
- 13. Matplotlib Contourf当阿尔法<1
- 14. 阿尔法布局让所有的孩子都有阿尔法?Android
- 15. 德尔福:图像具有阿尔法混合功能
- 16. OpenGL ES 1.1 - 阿尔法面具
- 17. JsARtoolkit阿尔法视频
- 18. 反转阿尔法值java
- 19. Libgdx decalbatch颗粒阿尔法
- 20. 的wxWidgets - 阿尔法混合
- 21. 设置视图阿尔法
- 22. SWT draw2d阿尔法混合
- 23. 无法使用阿尔托
- 24. ActionScript 3阿尔法补间
- 25. 阿尔法合成问题
- 26. 的Android动画阿尔法
- 27. 更改图片阿尔法
- 28. UINavigationBar的阿尔法除去
- 29. as3 hitTestPoint检测阿尔法
- 30. 性质Angular2阿尔法44
self.bottomToolbar。barStyle = UIBarStyleBlack; self.bottomToolbar.translucent = YES; self.bottomToolbar.backgroundColor = [UIColor clearColor]; – 2011-03-01 01:13:49
这个答案http://stackoverflow.com/a/5149484/1250436更好。 – ohcibi 2013-01-24 12:25:06